ssh远程连接docker中linux(ubuntu/centos)

centos

docker pull centos:latest 下载centos7镜像
docker run -i -t centos:latest /bin/bash运行下载好的centos7镜像
yum install passwd openssl openssh-server -y
启动sshd:
/usr/sbin/sshd -D
这时报以下错误:
<pre>
[root@ b5926410fe60 /]# /usr/sbin/sshd
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
</pre>
执行以下命令解决:
<pre>
[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
[root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
[root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
</pre>
然后,修改 /etc/ssh/sshd_config 配置信息:

  • 将端口22的注释去掉、permitrootlogin yes打开、protocol 2打开
  • UsePAM yes 改为 UsePAM no
  • UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no
    接着执行
    <pre>
    [root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation./UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
    [root@b5926410fe60 /]# sed -i "s/UsePAM.
    /UsePAM no/g" /etc/ssh/sshd_config
    </pre>
    修改完后,重新启动sshd
    /usr/sbin/sshd -D
    修改容器中的密码
    通过passwd命令

通过上述操作,再将此时容器保存为镜像
docker commit b5926410fe60 centos7-ssh
删除之前的容器
基于新镜像运行容器
docker run -d -p 10022:22 centos7-ssh:latest /usr/sbin/sshd -D

从远程连接
ssh root@宿主机ip -p 10022

到此为止,成功。

ubuntu

ubuntu操作类似,参考

参考资料

centos

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、需求由于在测试环境中使用了docker官网的centos 镜像,但是该镜像里面默认没有安装ssh服务,在做测试...
    虾米在海飘阅读 962评论 0 3
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,544评论 0 120
  • 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维,省得每次部署一...
    Helen_Cat阅读 1,343评论 0 4
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,798评论 0 7
  • 别人跑步时在想啥?或者应该想啥?这样的问题困扰我很久。 现在回忆以前跑步时到底想了什么,竟然毫无印迹。好像跑步的是...
    我是吴掌柜阅读 216评论 1 0