在没有端口转发的情况下通过路由器 ssh

Jie*_* Li 13 linux ssh port-forwarding nat

我有一个 linux 服务器,我想把它放在路由器后面的家庭网络中。我有时需要从外部 ssh 到此服务器,但我不想设置端口转发,因为我无权访问路由器,也不知道路由器的 IP。

我能做的就是把一些程序放在linux服务器上,这样当它连接到Internet时,它就会不断地向我的另一台在线服务器发送数据,所以我知道它的IP地址。但是有没有办法从外部通过 ssh 连接到路由器后面的服务器?诸如 NAT 或保持网络连接的套接字之类的东西?

非常感谢

Mat*_*ark 27

你想要做的是从你的“linux服务器”ssh到外面的东西,比如“my_other_server”或其他两个服务器都可以访问的东西。

您将使用 ssh 远程端口转发。
[user@linux_server]$ ssh -R8022:localhost:22 my_other_server.com
说明:连接到 my_other_server 并在那里打开端口 8022,它将在端口 22 上转发给我。

从 my_other_server.com,您将能够在端口 8022 上通过 ssh 连接到本地主机,并将您的流量转发到 linux_server 上的 linux_server -> my_other_server 隧道说明 [user@linux_server]$ ssh -p8022 localhost
:在转发到 linux_server 的端口 8022 上连接到我自己

如果您在初始 linux_server -> my_other_server 隧道退出时遇到问题,您可以编写一个脚本以使其保持打开状态、调整 keepalive 设置或使用 autossh。


小智 5

您可以使用ngrok。过程很简单:

  1. 在他们的网站上注册
  2. wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
  3. 解压 ngrok-stable-linux-amd64.zip
  4. ./ngrok authtoken <来自您的 ngrok 帐户的唯一密钥>
  5. ./ngrok TCP 22
  6. 在远程电脑上,您可以像这样连接:
    1. ssh 用户名@0.tcp.ngrok.io -p 11000