在ubuntu容器里搭建SSH服务,实现宿主机通过SSH访问容器

弄了三天终于搞定宿主机通过ssh访问ubuntu容器的目的,废话不多说,直接上图:
在这里插入图片描述
在这里插入图片描述
在第4步的时候,除了将PermitRootLogin yes,还需要将UsePAM no
如果出现报以下错误:
[root@192 ~]# ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:Ok1ny1jVkkPMajpXF98FUeshxirUvlfjYXoFkJqLcyw.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:3
ECDSA host key for 172.17.0.2 has changed and you have requested strict checking.
Host key verification failed.
请修改客户端~/.ssh/known_hosts文件错误信息行。

如果ssh服务器端修改了登录用户的密码后需要用命令service ssh restart重启服务

最后再提一个小小的问题,那就是我们服务搭建好以后,也提交了新的镜像后,我们会发现通过新的镜像执行docker run -it -d -p 外部端口:22 镜像名或镜像ID,可以生成容器,可是在我们执行ssh -p 外部端口号 root@本机地址,这个时候我们会发现无法通过ssh登录容器,原因在于容器内部的ssh服务并没有随着容器的启动而一起启动,需要我们登录进入容器,手动启动服务。这样很麻烦,有一个简单快速的解决办法:那就是在容器内的/etc/bash.bashrc这个文件里面添加两行命令:
service ssh start
service ssh start
为什么是两行呢?因为我发现第一次启动会失败(原因不明),第二次启动就Ok了。然后再把这个添加了自启动命令的容器再重新生成一个镜像,下次登录的时候登录这个新的镜像生成的容器就OK了。

发布了9 篇原创文章 · 获赞 1 · 访问量 2439

猜你喜欢

转载自blog.csdn.net/weixin_41915416/article/details/104082837