我以编程方式打开 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
永远不会运行并且等待被杀死。