![在 nautilus 中,连接到位于另一个 ssh 服务器后面的 ssh 服务器时出现问题](https://linux22.com/image/861170/%E5%9C%A8%20nautilus%20%E4%B8%AD%EF%BC%8C%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%BD%8D%E4%BA%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%20ssh%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8E%E9%9D%A2%E7%9A%84%20ssh%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
所以我有这个学校服务器,我正尝试通过 nautilus 连接它。在终端中一切都很容易,但我希望能够在 nautilus 中打开它。
在终端我的做法是这样的:
ssh [email protected]
现在我已连接到那里,我可以ssh myUser2.my.server2.com
在该服务器内部连接到服务器 2。我无法直接连接到服务器 2。必须像我现在所做的那样进行操作。
因此,现在我只能通过输入以下命令来连接到 nautilus 中的第一个服务器ssh://[email protected]
但是我如何从那里连接到 server2?
答案1
如果你的第一个 SSH 服务器 ( my.server.com
) 支持TCP 端口转发,您可以通过以下方式转发本地系统上的端口 ( localhost
) :my.server2.com
my.server.com
ssh -fNL 2022:my.server2.com:22 [email protected]
这会将端口 2022 转发localhost
到 上的端口 22。my.server2.com
然后,您可以直接连接到第二台服务器:
ssh myUser2@localhost:2022
在 Nautilus 中,您可以使用 进行连接ssh://myUser2@localhost:2022
。
这些-fN
标志将 SSH 发送到后台,并在关闭时产生问题。有三种解决方法:
自动关闭
ssh -fNL 2022:my.server2.com:22 [email protected] sleep 10
现在,在 sleep 命令执行完毕(10 秒)之前使用 Nautilus 进行连接。只要 Nautilus 处于连接状态,连接就会保持活动状态。完成后,断开与 Nautilus 的连接,连接就会停止。
让命令等待输入
ssh -tL 2022:my.server2.com:22 [email protected] 'read -p"Press Enter to exit: "'
这read
命令将等待输入。Enter完成后按 关闭连接。
查找连接进程并终止它
pgrep -fa fNL
这将显示fNL
命令行中的所有进程(应该只有您的 SSH 连接进程)。kill
如果有多个进程,则显示正确进程的 PID,或者使用pkill
如果只有一个进程:pkill -f fNL 对于已经使用建立的连接,这几乎是唯一的选项-fN
。
不运行任何命令,照常退出
ssh -L 2022:my.server2.com:22 [email protected]
这将打开一个普通 shell,您可以像平常一样退出。