-N告訴SSH客戶端,這個連接不需要執(zhí)行任何命令,也就是說不需要打開遠程,僅僅做端口轉(zhuǎn)發(fā);
-T不為這個連接分配TTY 。其中-N,-T兩個參數(shù)可以放在一起用 , 代表這個SSH連接只用來傳數(shù)據(jù),不執(zhí)行遠程操作;
-f告訴SSH客戶端在后臺運行,要關閉這個后臺連接,就只有用kill命令去殺掉進程;
-L做本地映射端口 , 需要注意被冒號分割的三個部分含義,下面做詳細介紹;
-C壓縮數(shù)據(jù)傳輸;
-g()默認只轉(zhuǎn)發(fā)本地發(fā)送的數(shù)據(jù),如果要轉(zhuǎn)發(fā)其它服務器的客戶端請求,則需要添加該參數(shù) 。
注意,使用時需要修改服務端的如下配置 。
接下來,看看具體的使用場景,以及配置方式 。
本地轉(zhuǎn)發(fā)
其中,通過本地轉(zhuǎn)發(fā)時,命令參數(shù)如下 。
-----本地轉(zhuǎn)發(fā)方式的參數(shù)設置$ssh-N-f-L[]:[]:[][user@]
其中-參數(shù)的含義是:將IP為Y的機器的Z端口通過中間服務器(部署了sshd的服務器)映射到本地機器的X端口 。
【ssh 代理設置】需要注意的是,此是只有ssh客戶端與服務器之間的數(shù)據(jù)是加密的 , 而實際上中間服務器到Y(jié)服務器的數(shù)據(jù)沒有加密 。
轉(zhuǎn)發(fā)到本地服務
為了防止被攻擊 , 通常在進行防火墻配置時 , 會盡可能減小打開的端口 , 例如只開啟服務端口 , 因此如果需要訪問mysql(3306)服務只能從本地訪問,此時可以使用該功能 。
可以執(zhí)行如下命令,然后訪問本地的端口7000即可 。
-----本地執(zhí)行如下命令,然后訪問localhost:7000即可$ssh-N-f-L7000:localhost:3306mysql_server_ip-----訪問遠程的MySQL服務$mysql-P7000-hlocalhost
注意 , 非管理員只能使用1024~65535的端口,在此選擇7000端口 。
數(shù)據(jù)在傳輸時將會通過如下的四步:A)將數(shù)據(jù)發(fā)送到本地的7000端口;B)本地的SSHClient將7000收到的數(shù)據(jù)加密后發(fā)送到mysql_server_ip;C)SSHD端收到數(shù)據(jù)后解密,并發(fā)送給本地的3306端口;D)從MySQLServer上返回的數(shù)據(jù)按照原路返回 。
轉(zhuǎn)發(fā)到其它服務器
另外一種場景如下,A嘗試訪問C提供的FTP服務,但是由于防火墻導致不能直接訪問,也就是說ABC鏈路不通 。但是ABD鏈路是通的,而且D上運行著ssh-server,此時就可以利用隧道技術建立ABDC鏈路 。
也就是說 , 中間服務器D部署著sshd服務,用于建立ssh連接;C的21端口提供FTP服務,然后就可以通過如下方式建立隧道 。
-----本地執(zhí)行如下命令,然后訪問localhost:2121即可$ssh-N-f-L2121:234.234.234.234:21123.123.123.123-----訪問234.234.234.234服務器上的ftp服務$ftplocalhost:2121
遠程轉(zhuǎn)發(fā)
對于上述的第二個場景,A通常時一個內(nèi)網(wǎng),也就是說D-B-A是無法建立鏈接的,如上所述,而A-B-D是可以通過ssh建立鏈接的,為了可以建立D-B-A的連接,那么就需要遠程轉(zhuǎn)發(fā)了 。
也就是說 , 我們利用一條已經(jīng)連接好的A-B-D方向的連接來完成D-B-A方向的訪問 。
$ssh-R[localport]:[remotehost]:[remoteport][SSHhostname]-----在123.123.123.123上執(zhí)行如下命令,建立22(ssh服務)的遠程轉(zhuǎn)發(fā)$ssh-N-f-R2222:127.0.0.1:22123.123.123.123-----反向登陸到D上$ssh-p2222localhost
此是的操作為讓SSHhostname監(jiān)聽自己的localport端口;將所有的數(shù)據(jù)經(jīng)由123.123.123.123服務器,轉(zhuǎn)發(fā)到remotehost:remotepost服務器 。
對于D來說 , A是一臺遠程主機 , 所以這種情況就被稱為“遠程端口綁定” 。
兩者比較容易混淆,可以通過如下的方法區(qū)分 。如果服務器(ssh和應用)都在同一端,則是本地轉(zhuǎn)發(fā);否則是遠程轉(zhuǎn)發(fā) 。
另外,需要注意,”遠程端口轉(zhuǎn)發(fā)”的前提條件是,D和A兩臺主機都有sshd和ssh客戶端 。
另外示例
也可以理解為,A提供了一個服務,D想要訪問這個服務,但是A沒有公網(wǎng)IP,導致D無法直接訪問 。
此時就需要建立一個A-D的隧道 , 然后D通過這個隧道訪問即可 。
ASVR(ssh-CLI)172.16.0.163DCLI(ssh-SVR)192.168.9.15ssh-N-f-R3967:127.0.0.1:3967root@192.168.9.15
動態(tài)轉(zhuǎn)發(fā)
也就是通過ssh在本地建立一個socks代理服務,所有的本地網(wǎng)絡訪問都會通過該端口,然后轉(zhuǎn)發(fā)到服務器,而應用程序決定使用那個端口 。
可以用作隧道代理,其大致的工作如下:
整個流程如下:
相關閱讀
猜你喜歡
- ssh 通過代理連接服務器
- 玫琳凱代理
- 味千拉面加盟代理招商 味千拉面加盟投資至少
- 玫琳凱護膚品代理玫琳凱代理 代理條件 加盟店怎么樣
- 淘寶網(wǎng)店代理貨源
- 深圳公司注冊代理
- linux 中國◆開ssh代理源社區(qū)
- 供應成都戴爾 成都
- 玫琳凱加盟 代理條件 加盟店怎么樣
- 派多格寵物店加盟代理招商 寵物店連鎖 寵物店加盟排行榜
