不使用其他远程服务器则无法通过 SSH/SFTP 连接到远程服务器

不使用其他远程服务器则无法通过 SSH/SFTP 连接到远程服务器

我可以访问服务器A使用 SSH,然后我就可以访问服务器,但我无法访问直接地。

是否可以在服务器中打开 Nautilus 文件夹通过点击PlacesConnect 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

相关内容