51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Windows 远程登录 Linux 服务器 docker 容器

ssh是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,广泛用于远程登录的场景,也是远程调试代码的神兵利器。在开发中经常会在服务器启动自己的 docker 容器进行开发,又需要调试代码,vim的调试环境配置起来门槛又太高。于是就有了使用Windows直接ssh打通docker进行调试的需求。本文记录Windows远程登录Linux服务器docker容器的方法。

环境说明 {#环境说明}

  • 登录主机操作系统 Win 10
  • 被登录主机操作系统 docker container in Linux
  • 主机与被登录主机(此处指服务器,不是docker)网络联通,IP在同一网段
  • 服务器与docker的IP在同一网段

配置方法 {#配置方法}

建立docker与Linux服务器的端口映射 {#建立docker与Linux服务器的端口映射}

ssh协议链接时默认使用22端口,Windows与docker的端口往往不能直接进行映射(很可能不在一个网段),因此需要将docker的22端口映射到Linux服务器的某个端口,此时需要在建立docker容器时进行配置

  • 其中 -p 的部分表示将本机(服务器)的3721端口映射到容器的22端口。

容器内部安装ssh服务 {#容器内部安装ssh服务}

需要在被登录的容器内部建立并启动ssh服务。

  • 首先需要安装:
  • 安装完成后需要容器每次启动时自动运行相关服务,可以在 ~/.bashrc中加入:

这样就保证了docker容器自动启动该服务。

  • 查看ssh运行状态

如果是 * sshd is running 说明ssh正常运行

修改容器内root用户登录设置 {#修改容器内root用户登录设置}

有的容器默认不支持root用户远程使用ssh协议进行密码登录的,此时需要更改设置。

  • 打开 /etc/ssh/sshd_config文件:
  • PermitRootLogin 设置为 yes

修改root密码 {#修改root密码}

远程登录时需要使用系统的用户密码,我们就直接使用root用户登录好了,需要设置新建容器的密码:

设置SSH {#设置SSH}

SSH连接服务器 {#SSH连接服务器}

需要用户名(被登录端用户)与被登录的主机ip和端口号

例如: 用户名- root ip:192.168.10.12 端口映射为 3721

  • linux
  • Windows

  • 如果不清楚Linux系统端口映射配置情况:

X-shell配置 {#X-shell配置}

命令行ssh登录成功后就可以在X-shell中建立配置信息方便地连接了。

  • 新建会话,填写名称、IP、端口号(我们刚刚配置过的):

  • 用户身份认证,填入用户名密码(刚刚配置过的):

  • 随后就可以使用该会话直接登录docker容器了,为远程调试打下了坚实的基础:

填坑 {#填坑}

  • ssh: Could not resolve hostname 192.168.10.12:3721: Name or service not known

    这是在Windows中使用了Linux格式的SSH登录命令导致的解析错误

    将命令语法更换为Windows的格式即可

  • root 用户无论如何密码不被接受

    需要在被登录主机 /etc/ssh/sshd_config 中设置:

    • 重点:PermitRootLogin yes
  • Connection to 192.168.10.12 closed.

  • Connection closed by foreign host.

    意思是 断开主机链接了,出现这种问题,跟你的IPTABLES,防火墙什么的都没关系。

    造成这个原 因是因为原来连接到SSHD服务器进程的22端口,当你的客户端突然断开时,服务器端的TCP连接就处于一个半打开状态。当下一次同一客户机再次建立 TCP连接时,服务器检测到这个半打开的TCP连接,并向客户机回传一个置位RST的TCP报文,客户机就会显示connection closed by foreign host。
    这是TCP协议本身的一个保护措施,并不是什么错误,你只要再重新连接服务器就能连上。

    --------- http://www.pooy.net/connection-closed-foreign-host.html

    总结一下解决方案: 关机重启

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/system/windows/win-ssh-linux-docker/win-ssh-linux-docker/

赞(0)
未经允许不得转载:工具盒子 » Windows 远程登录 Linux 服务器 docker 容器