原文地址https://linux.cn/article-5975-1.html
# 需要被访问的NAT内的服务器:homeserver_user@homeserver
# 中继服务器:relayserver_user@relayserver
1.根据文章中第一步:在Linux上设置了反向ssh隧道
homeserver_user@homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1 # 1.1.1.1 == (中继服务器公网ip)
此时可以从任何其它计算机(客户端计算机)登录到中继服务器,然后再按照下面的方法访问家庭服务器。
relayserver_user@relayserver:~$ ssh -p 10022 homeserver_user@localhost # homeserver_user == (需要被访问的NAT内的服务器用户名)
# 10022 == (中继服务器上随便一个未占用的端口)
2.在进行第二步:直接连接到网络地址变换后的服务器
中的重新初始化一个反向ssh隧道时
homeserver_user@homeserver:~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1 # relayserver_user == (中继服务器用户名)
# 1.1.1.1 == (中继服务器公网ip)
出现Warning: remote port forwarding failed for listen port 10022 的错误
在kill了之前设置的反向ssh隧道,即中继服务器上的10022端口的进程后,依然存在此错误
最后发现将输入改为
homeserver_user@homeserver:~$ ssh -fN -R 172.16.185.243:10022:localhost:22 relayserver_user@1.1.1.1
# 1.1.1.1 == (中继服务器公网ip)
# 172.16.185.243 == (中继服务器内网ip)
成功实现中继服务器反向ssh转发