`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永远不会运行并且等待被杀死。

相关内容