1、主要设置
#设置登录密码 apt-get install passwd passwd #安装ssh apt-get install openssh-server #配置 shh:生成 ssh 容器的公钥、私钥 #注意:生成过程中需要两次回车,以进行下一步。 cd /etc/ssh ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key #创建允许外部访问的认知文件 mkdir -p ~/.ssh > ~/.ssh/authorized_keys #编写容器的服务启动脚步 vim /run.sh #写入以下内容退出:下面内容不对,无法执行,看三(注意事项) #!/bin/bash /usr/sbin/sshd -D #设置执行权限 chmod +x /run.sh #退出 exit
2、启动容器
如果不能启动,去掉/run.sh,改成/bin/bash,然后手动执行/run.sh中内容
docker ps -a
docker commmit 容器id 新镜像
docker images
#-p 2222:22 将容器的22端口服务映射到宿主机的 2222 端口上
docker run -d --name 容器名称 ... -p 2222:22 镜像名称 /run.sh
3、本地ssh连接容器
ssh root@127.0.0.1 -p 2222
4、注意事项
1)将容器commit保存为镜像,然后再次启动时,执行/run.sh会失败。进入容器后,手动执行run.sh中内容,又会报错,解决方法如下。
#报错如下 root@3f912011817b:/usr/sbin# /usr/sbin/sshd Missing privilege separation directory: /run/sshd #解决方法如下 mkdir /run/sshd /usr/sbin/sshd ps -e | grep ssh #显示内容如下 4137 ? 00:00:00 sshd
2)如果root连接容器,需要修改: vim /etc/ssh/sshd_config