配置Docker容器的SSH服务

声明转载 https://zhuanlan.zhihu.com/p/52827335

配置SSH服务
接着我们在刚刚新建的容器里配置SSH服务,首先安装openssh-server:

$ apt update
$ apt install -y openssh-server

然后建立一个配置文件夹并进行必要的配置:

$ mkdir /var/run/sshd
$ echo 'root:passwd' | chpasswd

这里使用你自己想设置的用户名和密码,但是一定要记住!

$ sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
$ sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
$ echo "export VISIBLE=now" >> /etc/profile

如果连不上SSH服务,可能是某些版本的PermitRootLogin yes默认被注释了,可以使用如下(感谢 @Chenjie Xing 的反馈):

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

重启SSH激活配置:

$ service ssh restart

在服务器(宿主机)上(不是服务器的docker里)测试刚刚新建docker容器中哪个端口转发到了服务器的22端口:

$ sudo docker port [your_container_name] 22

如果前面的配置生效了,你会看到如下输出

0.0.0.0:8022

最后测试能否用SSH连接到远程docker:

$ ssh root@[your_host_ip] -p 8022

密码是你前面自己设置的

到这里说明服务器的docker端已经完成配置。