具有永久 ssh 连接的 bash 脚本

具有永久 ssh 连接的 bash 脚本

我使用运行的 bash 脚本

/usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 [email protected]

但是,当我运行 bash 脚本时,它会等待..我看到连接正在建立,但脚本没有退出..就像它正在等待 SSH 进程完成一样,因为当我手动终止它时,bash 脚本也会完成。

有什么想法可以解决这个问题吗?

更新: 我已经 croned 这个脚本..并且 cron 进程是变成僵尸的进程..实际的脚本运行良好,对此感到抱歉,使用 ps -auxf 我得到:

root       597  0.0  0.7   2372   912 ?        Ss   Jul12   0:00 cron
root      2595  0.0  0.8   2552  1064 ?        S    02:09   0:00  \_ CRON
1001      2597  0.0  0.0      0     0 ?        Zs   02:09   0:00      \_ [sh] <defunct>
1001      2603  0.0  0.0      0     0 ?        Z    02:09   0:00      \_ [cron] <defunct>

当我终止 ssh 时,那些不再存在的程序就消失了..它们为什么会不再存在呢?

答案1

似乎你正在尝试重新实现自动SSH(apt-get 安装 autossh)。

创建没有密码的 RSA 密钥对,将公钥安装在[电子邮件保护]然后尝试:

autossh -f -N -L8888:127.0.0.1:3306 [email protected]

答案2

去除$

workstation:~$ /usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 server.host.com
DSA host key for IP address '205.205.219.5' not in list of known hosts.
workstation:~$ ps x | grep '\-f'
16170 ?        S      0:00 /usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 server.host.com

正如你为我详细描述的那样,它直接进入背景。我确实有一个密匙对但是,在我的测试服务器上设置。

您的本地服务器上是否已有一些程序监听 8888?您的后台是否已有一个实例?

答案3

ssh从终端分离进程:

  1. 发送到后台

    /usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 serveradmin@$34.324.234.23 &

  2. 不行

    nohup /usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 serveradmin@$34.324.234.23

相关内容