语境
我将 Ubuntu Desktop 作为我的主要机器运行,我将其称为 D。我想通过 ssh 连接到服务器 S,但防火墙阻止了我。
我可以通过非常繁琐的路径访问服务器 S,其中涉及 Windows 虚拟机和PuTTY。这使得使用此服务器非常烦人:完全不同的环境,复制/粘贴不起作用,连接到桌面时我无法正确使用桌面(Alt-Tab 被虚拟机破坏)等
我已经验证我可以从服务器 S SSH 到我的台式机 D(与我需要的相反)。
我可以从服务器以某种方式启动“端口转发”或类似的东西,以便我可以从我的桌面 ssh 到服务器吗?
您可以使用以下命令设置从远程服务器到本地计算机的 SSH 隧道:
设置隧道后,您可以使用以下命令简单地 ssh 到远程服务器:
请注意,您需要为自动登录设置 ssh 密钥(无密码提示)。如果您想以交互方式创建 SSH 隧道,您可以删除 options
-f -N
。欲了解更多信息,man ssh
.如果您正在运行较新版本的 OpenSSH(7.3+),那么您可以使用
ProxyJump
它神奇地将所有东西烘烤在一起:你
~/.ssh/config
看起来像:ProxyJump
支持完整的 SSH 语法,所以如果你jim
打开windows_server
并且它使用 ssh 的端口2222
。remote_server
是在 IP192.168.0.110
从那windows_server
你可以写:仍然只是跑到
ssh remote_server
那里。如果您正在运行旧版本的 SSH,请使用ProxyCommand - 这允许您告诉 SSH 在运行实际的 SSH 命令之前先运行命令以建立代理连接。
这使用了 SSH -W选项,它是更神秘的netcat 语法的简写。
请注意,当您运行时,
ssh remote_server
您现在windows_machine
需要确保使用remove_server
来自跳转框的 IP,而不是来自您机器的 IP - 这些很可能是相同的。然后,您可以将此指令添加到您的
~/.ssh/config
文件中:这意味着如果
remote_server
是从那以后看到的另一台机器,windows_machine
您可以将其放入配置中并仍然使用ssh remote_server
.与其试图规避事情并创建一个复杂的路径,你不能只要求允许从桌面到服务器的 SSH 吗?如果您需要它并且您应该访问服务器,我看不出您为什么会拒绝该请求。