所以我有这个学校服务器,我正尝试通过 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,您可以像平常一样退出。