如何在Docker容器上设置SSH?

aelbi1ox  于 2023-08-03  发布在  Docker
关注(0)|答案(1)|浏览(147)

我正在尝试与本地主机上的Docker容器建立ssh连接。我有另一个安装程序(HPE的SLM-UI安装程序,如果这意味着什么)正在Docker容器上运行,需要ssh到它。
我的Dockerfile看起来像这样:

FROM ubuntu

# Install SSH server and create the sshd_config file
RUN apt-get update && apt-get install -y openssh-server
RUN echo 'root:password' | chpasswd

# Enable password authentication
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# Start the SSH server
CMD ["/usr/sbin/sshd", "-D"]

字符串
我的Docker-Compose文件看起来像这样(这里只有host 1很重要):

version: '3'
services:
  host1:
    build: 
      context: C:\Users\GavinAn\ssh_ubuntu
      dockerfile: ssh_ubuntu.dockerfile
    ports:
      - 5814
      - 30303
      - 30304
      - 30305
      - 2222:22
    command: tail -F anything

  host2:
    image: ubuntu
    ports:
      - 30303
      - 30304
      - 30305
    command: tail -F anything


我已经将Docker容器的IP地址(我在本地主机上运行docker inspect获得)和用户名/密码(分别为root和密码)输入到安装程序中。我还输入了端口22和2222以及ssh端口号。当我尝试运行它时,我得到一个dial tcp [IP ADDRESS:PORT]:connect:connection refused错误。
从我的本地主机通过ssh root@localhost -p 2222连接也不起作用,给出错误kex_exchange_identification: Connection closed by remote host

bkhjykvo

bkhjykvo1#

这个命令覆盖了docker文件中的CMD,SSH守护进程甚至没有启动,所以从docker-compose.yaml中删除这一行

command: tail -F anything

字符串
除了通过在Dockerfile中添加行来创建工作SSH守护程序的目录之外

RUN mkdir /var/run/sshd

相关问题