通过 SSH 登录 Linux 是一种非常常见的方式,但是在一些情况下,SSH 无法直接连接,给远程管理服务器带来不便:
- 服务器有防火墙限制,SSH 端口无法直接连接
- 服务器在内网环境,没有可供连接的公网 IP
这时候如果有一台另外的公网服务器,通常可以使用端口转发来解决问题,借助公网服务器,将内网服务器的 SSH 端口映射到公网服务器就能访问。用 ssh 命令即可实现本地端口转发和远程给端口转发,可以参考下面的命令:
-
远程转发(将远程端口映射到本地主机)
ssh -R src_port:dst_ip:dst_port server
-
本地转发(将本地端口映射到远程主机)
ssh -L src_port:dst_ip:dst_port server
不过这个方案仍然有缺陷:
- 需要依赖一台公网服务器来提供代理服务
- 每次使用之前需要先登录到目标服务器上把端口转发出来(我就是因为登录不上去才需要转发啊。。。)
更推荐的方法是使用基于 agent 反向连接的牧云主机管理助手。