我在使用SSH连接到运行Alpine Linux 3.10的Docker容器(来自this image)时遇到问题。必须为此连接使用SSH,而不是其他连接方法。
首先我使用以下方法连接到Docker容器中
docker exec -it <container_name> /bin/bash
然后尝试重新安装并启动sshd
bash-5.0# apk add openssh --no-cache
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
OK: 117 MiB in 42 packages
bash-5.0# apk add openrc --no-cache
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
OK: 117 MiB in 42 packages
bash-5.0# rc-update add sshd
* rc-update: sshd already installed in runlevel `sysinit'; skipping
bash-5.0# /etc/init.d/sshd start
* WARNING: sshd is already starting
但是,我无法从Docker容器内部连接到本地sshd
服务器
# ssh [email protected]
ssh: connect to host 127.0.0.1 port 22: Connection refused
同样,从Ubuntu主机通过SSH连接到Docker容器也失败。
$ ssh [email protected]
ssh: connect to host 172.26.0.4 port 22: Connection refused
其中172.26.0.4是从Docker容器中运行ifconfig
显示的IP地址。
关于如何解决这个问题的任何想法?
我没有下载您所指的映像,但是使用了默认的docker alpine-image。为了使ssh在容器中运行,还需要执行一些额外的步骤-您很有可能需要执行相同的操作:
ssh-keygen -A
rc-status
touch /run/openrc/softlevel
/etc/init.d/sshd start