ssh是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,广泛用于远程登录的场景,也是远程调试代码的神兵利器。在开发中经常会在服务器启动自己的 docker 容器进行开发,又需要调试代码,vim的调试环境配置起来门槛又太高。于是就有了使用Windows直接ssh打通docker进行调试的需求。本文记录Windows远程登录Linux服务器docker容器的方法。
ssh协议链接时默认使用22端口,Windows与docker的端口往往不能直接进行映射(很可能不在一个网段),因此需要将docker的22端口映射到Linux服务器的某个端口,此时需要在建立docker容器时进行配置:
$ docker run -it --name vvd -p 3721:22 -v /root/tmp:/root/tmp my_docker bash
-p
的部分表示将本机(服务器)的3721端口映射到容器的22端口。需要在被登录的容器内部建立并启动ssh服务。
apt-get update
apt-get install openssh-server
apt-get install openssh-client
~/.bashrc
中加入:/etc/init.d/ssh start
这样就保证了docker容器自动启动该服务。
/etc/init.d/ssh status
如果是
* sshd is running
说明ssh正常运行
有的容器默认不支持root用户远程使用ssh协议进行密码登录的,此时需要更改设置。
/etc/ssh/sshd_config
文件:# PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
PermitRootLogin yes #允许root用户使用ssh登录
PermitRootLogin
设置为 yes远程登录时需要使用系统的用户密码,我们就直接使用root用户登录好了,需要设置新建容器的密码:
passwd root
需要用户名(被登录端用户)与被登录的主机ip和端口号 例如: 用户名- root ip:192.168.10.12 端口映射为 3721
ssh root@192.168.10.12:3721
ssh -p 3721 root@192.168.10.12
iptables -t nat -L -n
命令行ssh登录成功后就可以在X-shell中建立配置信息方便地连接了。