通过 ssh 的隧道跳板机

绕过跳板机,一步直达目标主机

上次在公众号发了一段话讲了怎样从外部访问公司内服务器:

在办公室机器上打一个隧道到公网服务器上。 回家后登录到公网服务器,从那里直接就连接到公司的服务器了。 公司内服务器运行: user_internal@server_in_office$ ssh -f -N -R 2222:localhost:22 user@host.qcloud.com 腾讯云上服务器,运行 $ ssh -p 2222 user@localhost 就能进入办公室服务器了。 user 可以是办公室搭桥的服务器上任意的用户,不一定是当时搭桥的用户。 搭桥的 ssh 命令可以用 autossh 命令替换。

但是如果要从其他地方进入公司的服务器,每次都要先登录到云端,再在云端的服务器上运行上面的命令,是不是多了一个步骤? 解决方案来了:

ssh -o ProxyCommand=”ssh -W localhost:2222 user@host.qcloud.com” server_in_office

man ssh 对 -W 参数是这么解释的:

这是公司内服务器对外不暴露 ssh 端口的情形下的解决方案,当然,如果公司内服务器直接对外暴露 ssh 端口,就无需以上跳板,连第一步也是多余的了。

至于公司内 IP 地址经常变动,怎样获得相对不变的域名,一般都是 DDNS 的解决方案,我们采用 GoDaddy 的 API,把注册在 GoDaddy 上的二级域名,用定时任务检测到内部 IP 地址变化时,自动更新域名。
该脚本全文已经放在 github, 欢迎 fork and star.

作者: 甬洁网络

--移动互联网&物联网技术提供商