我有一个通过 ssh 远程运行多个命令的脚本。我单独运行每个命令,因为我想在执行之间做其他事情。
但是,我不想每次发出新命令时都重新创建 ssh 会话。我已经读过,-oControlMaster
但我似乎无法让它发挥作用。
当我跑步时:
ssh -oControlMaster=yes -oControlPath=/tmp/test.sock root@host
输入密码后,我就会得到一个 ssh 会话。如果我退出,则/tmp/test.sock
无法找到该文件。
我缺少什么?
答案1
您可以使用该ControlPersist
选项在与服务器断开连接后离开套接字。
例如,在我的 ssh 配置文件中,我有这个片段,它使连接保持打开状态 3 秒。
主持人 * 控制大师自动 ControlPath ~/.ssh/master-socket/%r@%h:%p #ControlPath /run/user/%i/sshmasterconn-%C #ControlPath ~/.ssh/%r@%h:%p 控制持续3秒
答案2
主连接需要打开,其他连接才能使用主连接。
套接字文件仅在主连接打开时可用。如果关闭主连接,则套接字文件将被删除。如果主连接关闭,则任何打开的“从”连接都将被关闭。