SSH -N -f 后台隧道详解 | AI生成和翻译
问题:为什么带有 -N -f 的 SSH 命令会立即退出,而不带这些标志的类似 SSH 命令会一直运行直到按 Ctrl+C?
答案:
区别在于你所使用的 SSH 标志的含义:
-
-L 5001:127.0.0.1:5001- 这设置了本地端口转发:你的本地端口
5001转发到远程主机的127.0.0.1:5001。
- 这设置了本地端口转发:你的本地端口
-
-N- 告诉 SSH 不执行任何远程命令。它只设置端口转发。
-
-f- 要求 SSH 在执行命令之前进入后台。通常与
-N一起使用,以便 SSH 隧道在后台运行,无需保持终端打开。
- 要求 SSH 在执行命令之前进入后台。通常与
所以你的命令:
ssh -L 5001:127.0.0.1:5001 amd-cloud -N -f
- 设置隧道,然后立即将自己放入后台,这就是为什么你的终端提示符立即返回。
- 隧道仍在后台运行;你可以用
ps aux | grep ssh检查,或者尝试连接到localhost:5001。
相比之下,当你使用不带 -N -f 的 SSH 时,例如:
ssh -L 5001:127.0.0.1:5001 openclaw
- SSH 会登录到远程主机并保持会话为交互式。
- 进程保持在前台,直到你按
Ctrl+C或输入exit。 - 只要会话存活,端口转发就有效。
关键要点:
-N -f→ 仅后台隧道,终端立即退出。- 不带
-N -f→ 前台交互式会话,一直保持直到手动终止。
你也可以根据需要组合它们,取决于你是想保持终端空闲还是保持登录状态。
参考资料: