我使用运行的 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
从终端分离进程:
发送到后台
/usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 serveradmin@$34.324.234.23 &
不行
nohup /usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 serveradmin@$34.324.234.23