参考博客:
知乎:https://zhuanlan.zhihu.com/p/52827335
https://blog.csdn.net/hanchaobiao/article/details/84069299
https://www.cnblogs.com/shijf/p/10386193.html
-
修改docker端口映射:https://www.cnblogs.com/shijf/p/10386193.html
-
运行一个容器
docker run -itd -p 10022:22 镜像ID #宿主机端口:10022,容器端口:22
-
设置登入密码命令:
passwd
-
进入的docker容器安装ssh
apt update # 这一步不可少
apt upgrade
apt-get install openssh-server
apt-get install openssh-client
sudo apt install vim -
使用vim编辑docker里的sshd_config文件,vim 的基本操作指令连接
vim /etc/ssh/sshd_config
内容如下:
# PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释 RSAAuthentication yes #启用 RSA 认证 PubkeyAuthentication yes #启用公钥私钥配对认证方式 PermitRootLogin yes #允许root用户使用ssh登录
上面这步也可以参考第一个链接的方式:
然后建立一个配置文件夹并进行必要的配置:$ 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,一定不能忘,否则连接的时候会出现 permission denied,出现这个问题还有可能是密码错误!本人就是记混密码搞了一下午,泪奔
service ssh restart
-
退出容器,用宿主机连接看是否成功
ssh root@宿主机ip -p 宿主机映射到容器的端口号 或者 ssh -p 端口 root@宿主机ip,本地为:127.0.0.1
-
断开ssh链接
exit
疑难杂症
-
sshd: unrecognized service
ssh服务没有开启:https://blog.csdn.net/u012762573/article/details/46641923 -
ECDSA host key for [127.0.0.1]:10022 has changed and you have requested strict checking.
Host key verification failed. -
ssh: Could not resolve hostname 127.0.0.1:10022: Name or service not known
ssh 链接写错了,我写成了ssh root@127.0.0.1:10022,
应该是:
ssh -p 10022 root@127.0.0.1 或者 ssh root@127.0.0.01 -p 10022
-
ssh_exchange_identification: Connection closed by remote host
如果确认一切设置,密码正确,那进入容器
设置 ssh 开机启动和重启一下
systemctl enable ssh
service ssh restart