在 ssh 的手册页中,它说:
-N Do not execute a remote command. This is useful for just forwarding ports.
Run Code Online (Sandbox Code Playgroud)
我不明白“不执行远程命令”是什么意思。
有人可以向我解释一下吗?
ber*_*sch 25
通常,ssh程序在远程系统上运行命令(使用远程用户的 shell)。例如,ssh user@server ls -l /tmp列出 /tmp 目录的内容server。当您不使用该命令时,如在 中ssh user@server,将启动与用户 shell 的交互式登录会话。
OpenSSH 的功能之一是创建隧道。的-D,-L并-R选择使用,允许网络端口,也被称为隧道转发的各种技术。默认情况下,ssh只要执行的命令ssh在远程服务器上运行,创建的隧道就存在。
但是,您通常对运行远程命令不感兴趣。你想要的只是隧道。这就是该-N选项的用途。
pLu*_*umo 12
通常,ssh会通过执行设置为您的远程用户登录 shell(例如/bin/bash)来为您提供远程 shell 。-N将阻止运行任何东西,这在您只想ssh用于建立连接并且不需要远程 shell时很有用。
例如转发端口或创建隧道:
ssh -N -L 8080:127.0.0.1:80 user@server
Run Code Online (Sandbox Code Playgroud)
这不仅对转发端口有用。
例如:我将它与-f和ControlMaster和ControlPath选项结合使用(例如在 .ssh/config 中设置),它可用于创建可重用的连接。
ssh -fN user@server # creates connection in the background that can be reused.
Run Code Online (Sandbox Code Playgroud)