Vps 到笔记本电脑的 ssh 隧道

Vps 到笔记本电脑的 ssh 隧道

我有一台笔记本电脑,我主要将其用作台式机,但偶尔会移动网络。我有一个具有静态地址的 vps,我想将端口从 vps 转发到笔记本电脑,这样我就可以从公共地址访问笔记本电脑,即使笔记本电脑位于没有端口转发设置的路由器后面。

通过在启动时运行笔记本电脑上的命令/脚本可以实现这一点吗?

如果这很重要的话,所有东西都在运行 Linux,我正在尝试将 minecraft 流量从具有公共地址且没有内存的 vps 转发到具有大量内存但没有公共地址的笔记本电脑,该笔记本电脑偶尔会移动到不同的网络。这可以通过 ssh 以某种方式实现吗?

在此先感谢您的帮助。

答案1

通常的方法是创建 VPN(例如使用 OpenVPN)。但您也可以使用 SSH。

ssh -R [bind_address:]port:host:hostport

您可以使用没有密码的密钥自动执行此操作,但中断的 SSH 连接不会自动重新启动。因此,从循环中进行 SSH 调用会很有用。不过 OpenVPN 会更有用。

编辑1

如果你想要转发除本地主机之外的其他远程地址,请不要忘记同时输入

GatewayPorts yes

sshd_config文件中服务器然后重启服务器。然后你必须使用以下格式的命令ssh

-R 1.2.3.4:port:host:hostport
-R \*:port:host:hostport # the \  being for the shell only
-R :port:host:hostport

host当地的端(通常localhost为主机的其他 IP 地址之一)。

答案2

正如 Hauke Laging 正确指出的那样 - ssh 连接可能会中断。

您应该使用autossh它在发生故障时自动启动和重新启动隧道。

答案3

在您的~/.ssh/config文件中,您可以像这样定义端口转发:

Host alias
HostName 12.34.56.78
  [Port 12345]
  [User patrick]
  [LocalForward 6900 localhost:6900]

答案4

也许在笔记本电脑上使用 dyndns?
或者您可以向 VPS 添加一个小型 Web 脚本(该脚本将更新防火墙),笔记本电脑可以在启动时使用 wget/curl 请求该页面。
该脚本可以是 bash/shell 脚本,并通过 ssh 执行,但从 shell 脚本中查找连接 IP 可能会更复杂(例如与 $_SERVER['REMOTE_ADDR'] 相比)

相关内容