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

https://www.jianshu.com/p/9e4d50ddc57e

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

这时报以下错误:

[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

执行以下命令解决:

[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 ''

然后,修改 /etc/ssh/sshd_config 配置信息:

将端口22的注释去掉、permitrootlogin yes打开、protocol 2打开

UsePAM yes 改为 UsePAM no

UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

接着执行

[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

修改完后,重新启动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

05-08 08:33