如何借助固定IP中转主机实现两台NAT后漫游主机的直接SSH连接
如何借助固定IP中转主机实现两台NAT后漫游主机的直接SSH连接
嘿,这个问题我之前折腾过好多次,你其实只差关键的一步就搞定了!
你之前的思路是对的,但为啥直接连intern:2222会被拒绝?原因很简单:默认情况下,SSH反向隧道(-R)绑定的是中转机(intern)的localhost(127.0.0.1),也就是说只有intern自己能访问这个2222端口,外部(比如你的home主机)根本连不上。
解决步骤如下:
1. 先配置中转机(intern)的SSH服务
你需要修改intern上的sshd_config,让它允许反向隧道绑定到公网IP:
- 编辑配置文件:
sudo vi /etc/ssh/sshd_config - 找到
GatewayPorts这一行,改成:
(如果要更安全,可以设为GatewayPorts yesGatewayPorts clientspecified,后面会说好处) - 重启SSH服务生效:
sudo systemctl restart sshd(不同系统可能命令不同,Ubuntu/Debian、CentOS等主流发行版都适用这个命令)
2. 在office主机上建立正确的反向隧道
现在用这个命令替代你之前的ssh -R:
office$ ssh -R 0.0.0.0:2222:localhost:22 intern
0.0.0.0表示让intern在**所有可用网卡(包括公网IP)**上监听2222端口,这样外部的home主机就能访问了。- 如果你设了
GatewayPorts clientspecified,可以更精准地指定绑定intern的公网IP,比如:
这样只有通过公网IP才能访问这个隧道,安全性更高。office$ ssh -R 你的intern公网IP:2222:localhost:22 intern
3. 从home主机直接连接office
现在你只需要在home上执行这一条命令,就能直接跳过中转机的shell,连到office:
home$ ssh -p 2222 office用户名@intern的公网IP
这里的office用户名是你在office主机上的SSH用户名,输入对应的密码(或者用密钥认证)就能直接进入office的shell了!
额外小技巧:保持隧道稳定
如果担心网络波动导致隧道断开,可以用autossh工具自动重连:
office$ autossh -M 20000 -R 0.0.0.0:2222:localhost:22 intern
-M 20000是指定一个监听端口,用来检测隧道是否存活,一旦断开会自动重新连接。
备注:内容来源于stack exchange,提问作者Michael Jinks
相关产品推荐
相关产品推荐

