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 端口轉發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM