我有一个进程期望 ssh 隧道连接正确执行,并且我一直在使用以下命令:
ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -N &
我已经成功运行了 8 个月,最近我们的托管提供商不得不进行硬件更改来更新我们的机器,并使用 Ubuntu 的新内核升级我们的机器。它从 4.8.3-x86_64-linode76 变为 4.8.6-x86_64-linode78。
经过一系列故障排除后,我们必须将命令更新为:
ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -fN
研究 ssh 文档时 -f 参数
请求 ssh 在命令执行之前进入后台。如果 ssh 要求输入密码或密码短语,但用户希望它在后台运行,那么这非常有用。这意味着-n。在远程站点启动 X11 程序的推荐方法是使用 ssh -f host xterm 之类的命令。
研究“&”的 bash 命令时
将进程置于后台(请参阅“UNIX 操作系统的中级使用”中的多任务处理)。
这两个命令有本质上的区别吗?
答案1
就在这里。从一开始就在后台ssh &
运行。在前台启动,允许它提示输入密码等,然后仅在执行请求的命令之前将自己置于后台。ssh
ssh -f
ssh
ssh