我以程式方式開啟 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
永遠不會運行並且等待被殺死。