当我不再连接到第一台机器后,使在第一台机器的屏幕上运行的命令能够继续在第二台机器上运行命令的最佳方法是什么?
背景如下。我有一个长期运行的命令,需要定期从其他机器收集信息。它通过发送 ssh 命令并读取输出来实现这一点。目前,这可以通过 ssh 代理来实现,因为我使用 进行登录ForwardAgent
。
目前,我可以通过 ssh 连接到第一台机器,运行命令,它就可以正常工作。同样,我可以启动屏幕,运行命令,断开与屏幕的连接,然后它继续运行。但是,如果我与第一台机器的 ssh 连接中断,那么 ssh 代理将停止工作,屏幕上运行的命令也会中断。
我希望即使我不再连接到任何一台机器,命令也能够正确运行。
答案1
据我所知,这是不可能的。代理使用的私钥永远不会传输到中间服务器。如果您与中间服务器的连接丢失,则根本无法用于身份验证。代理协议的设计使得您的私钥永远不会从运行代理的系统中转移出去。
如果您经常从此中间系统执行工作,则最好的选择可能是生成一个该系统独有的密钥对,并在您登录并启动流程时将其加载到该系统上运行的代理中。显然,您还需要将相关的公钥发布到您需要访问的所有系统。
答案2
您是否尝试过查看“nohup”?
http://linux.101hacks.com/unix/nohup-command/
在这种情况下,它似乎对你有用。
您可以使用 $ man nohup 查看更多信息