“不执行远程命令”是什么意思?

“不执行远程命令”是什么意思?

在 ssh 的手册页中,它说:

-N    Do not execute a remote command.  This is useful for just forwarding ports.

我不明白“不执行远程命令”是什么意思。

有人可以向我解释一下吗?

答案1

通常,ssh程序在远程系统上运行命令(使用远程用户的 shell)。例如,ssh user@server ls -l /tmp列出 上的 /tmp 目录的内容server。当您省略该命令时(如 中所示)ssh user@server,将启动与用户 shell 的交互式登录会话。

OpenSSH 的功能之一是创建隧道。 、-D和选项使用允许转发网络端口的各种技术-L-R也称为隧道。默认情况下,ssh只要ssh在远程服务器上执行命令,用 建立的隧道就存在。

但通常情况下,您对运行远程命令不感兴趣;你想要的只是隧道。这就是该-N选项的用途。

答案2

通常,ssh将通过执行设置为远程用户登录 shell 的内容(例如/bin/bash)来为您提供远程 shell。-N将阻止运行任何内容,当您只想用于ssh建立连接并且不需要远程 shell 时,这非常有用。

例如转发端口或创建隧道:

ssh -N -L 8080:127.0.0.1:80 user@server

这不仅对转发端口有用。

例如:我将它与 和-f选项结合使用(例如在 .ssh/config 中设置),它可以用于创建可重用的连接。ControlMasterControlPath

ssh -fN user@server # creates connection in the background that can be reused.

相关内容