ssh 端口转发时,大写 N 参数的作用

本地转发(-L)

将ssh的机器用作跳板机去连接另一台机器:
ssh -L 5050:192.168.0.0:4849 username@xyz.abc -N
敲完密码成功后,我们访问本机的5050端口就是在访问 username@xyz.abc 这台跳板机的局域网下的IP地址为192.168.0.0 的4849 端口。

二次跳板

设本机局域网地址为192.168.1.1, 如果使用以下ssh命令: ssh -L "*:5050:192.168.0.0:4849" username@xyz.abc -N, 并关闭本机和路由器防火墙,则使用同一网段中的别的机器(如192.168.1.5)访问192.168.1.1:5050 就等于在访问 username@xyz.abc 同一网段下 IP地址为192.168.0.0:4849。

-N 选项的含义

-N' Do not execute a remote command. This is useful for just forwarding ports (protocol version 2 only).
ssh man page
不执行远程命令. 用于转发端口. (仅限协议第二版)

解释

ssh用于在远端机的shell脚本中执行命令,如ssh user@server ls。 如果后面不指定命令,则进入远端机的shell。
而在使用ssh的 -D -L -R 选项进行端口转发时,我们总是希望保留这条打通的隧道,为其他业务而服务。因此使用 -N选项。

参考

What is the meaning of "Do not execute a remote command"?

SSH 端口转发

原文地址:https://www.cnblogs.com/mrlonely2018/p/15589721.html