在通过 ssh 连接到另一台服务器的服务器上运行 tail -f

在通过 ssh 连接到另一台服务器的服务器上运行 tail -f

我一直使用以下命令连接到一台服务器,该服务器连接到另一台服务器并在其上运行 tail -f:

ssh server1.com ssh server2.com tail -f file.log

到目前为止,这都运行良好。但是,当我想通过按 ctrl+c 退出 tail 进程时,我并没有退出 tail 进程,而是退出了 ssh 进程。这会让远程服务器上的 tail 进程继续运行,这显然不是一个好主意。

有人知道我该如何修复这个命令行吗?如果有在 os x 上运行的工具,可以让你轻松地在远程服务器上切换查看不同文件,我也会感兴趣。

答案1

如果您已经在 server1.com 上安装了 netcat(您可能已经安装了),那么您可能希望使用 ssh 指令ProxyCommand无缝跳转 server1.com;因此,当您按 Ctrl+C 时,它只会终止 server2.com 上的命令,而不是您的 SSH 会话。

示例~/.ssh/config(如果文件不存在则创建文件;如果文件存在则附加到末尾):

Host server2.com
  User piskvor
  ProxyCommand ssh -q server1.com nc -q0 server2.com 22

这里发生了什么:

  • ssh 连接到 server1.com
  • 它从那里远程连接到 server2.com(使用 nc)
  • 通过 server1.com 传输数据

这对你的 ssh 客户端来说是完全透明的,因此你可以像直接连接一样使用 server2.com(例如 SFTP、X 转发、TCP 转发等)

有关更详细的解释(以及将其扩展到多跳),参见此文章, 或这个SU 上的类似问题

相关内容