我可以访问服务器A使用 SSH,然后我就可以访问服务器乙,但我无法访问乙直接地。
是否可以在服务器中打开 Nautilus 文件夹乙通过点击Places
→ Connect to Server
?
答案1
是的,这是可能的。我有以下有效的设置,但可能还有更简单的设置。
在文件中~/.ssh/config
,添加以下行:
ControlMaster auto
ControlPath /home/yourusername/.ssh/tmp/%h_%p_%r
Host A
HostName hostname.of.server.a
Host B
ProxyCommand ssh -e none A netcat -w 5 hostname.of.server.b 22
您必须替换您的用户名、hostname.of.sever.a 和 hostname.of.server.b 之后,您可以(在 Nautilus 中)转到 Places->Connect to Server(在我的计算机上实际上是 File->Connect to Server)。然后输入B
。这样就可以看到服务器 B 了。
答案2
要尝试的一件事是将其添加到 .ssh/config:
Host B
ProxyCommand ssh A nc -q0 %h %p
ForwardAgent yes
一旦完成,您就可以ssh B
直接操作,并且 SSH 将知道首先通过 A “反弹”连接。
当它工作时,请按照您描述的方式尝试 Nautilus,看看代理设置是否也适用于它。
答案3
对先前答案的更新:使用 netcat 转发中间主机上的连接与直接使用 ssh 的方式不同,并且当您想要连接到设置为仅通过 jumphost 隧道接受本地连接的 VNC 服务器时会失败。为了使连接完全像直接连接一样工作,请使用较新版本客户端中提供的 -W 选项:
Host jumphost
Hostname hostname.of.jumphost
Host target
Hostname hostname.of.target
Port 30022
ProxyCommand ssh -W %h:%p jumphost