`ssh [...] sleep 3`(使用 sshpass)永遠不會關閉

`ssh [...] sleep 3`(使用 sshpass)永遠不會關閉

我以程式方式開啟 SSH 隧道:

sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3

並如預期工作,但不活動 3 秒後不關閉。

當連接完成時,我獲取 SSH PID 並明確終止;但我更喜歡這個sleep版本,如果可以自動關閉隧道。

使用sshpass保持隧道開放還是我做錯了什麼?

答案1

您正在使用

-f

請求 ssh 在命令執行之前進入後台。如果 ssh 要求輸入密碼或密碼短語,但使用者希望它在背景運行,那麼這非常有用。這意味著-n。在遠端站台啟動 X11 程式的建議方法是使用 ssh -f host xterm 之類的指令。

-N

不要執行遠端命令。這對於轉送連接埠很有用。

在執行命令(被抑制)之前進入後台。因此它留在後台。它sleep永遠不會運行並且等待被殺死。

相關內容