2021年1月3日 星期日

SSH Tunnel

這種SSH Tunnel其實是中繼轉發,並非真正的穿透,實際操作過是可以通的。

環境設定:

A: gsm.com:12345        211.23.2.222

B: 114.35.1.111             192.168.0.123

C: 211.23.2.222             192.168.10.111


NAT B $ autossh -p 22 -M 12345 -NR 12345:localhost:22 user@gsm.com


A $ ssh -p 12345 user@192.168.0.123

C $ ssh -p 12345 user@gsm.com


autossh -M 12345 -NR 12345:localhost:22 user@gsm.com -p 22

autossh -M 5678 -NR 3333:localhost:22 user@gsm.com -p22


ssh -NfR 1113:localhost:22 user@gsttest111.asuscomm.com -p22


機器代號 機器位置          IP地址              賬戶      ssh/sshd 埠   是否需要執行sshd

A(Server)        位於公網          ServerIP          userA      22                   是

B                 位於NAT 之後 localhost(B) userB      22                   是

C                 位於NAT 之後 localhost(C)    userC      22                   否


B$ ssh -NfR 1111:localhost(B):22 userA@ServerIP -p22

localhost(B)的(B)只是要表達這裡的localhost是B的localhost,實際下指令是只要寫localhost


參數

R是告訴Server A把傳到A的port 1111的data轉發到B的port 22,如果這邊B的sshd有監聽其它port,也可以把22改成其它port

N 告訴SSH客戶端,這個連線不需要執行任何命令,僅僅做埠轉發。

f 告訴SSH客戶端在後臺執行。


A$ ssh localhost(A) -p 1111


如果要從C傳data到A的port 1111再由A轉發給B,需要在sshd 的配置檔案/etc/ssh/sshd_config,將GatewayPorts 開關開啟:

GatewayPorts yes


C$ ssh localhost(C) -p 1111


將本地機(客戶機)的某個埠轉發到遠端指定機器的指定埠:

本地機器上分配了一個 socket 偵聽 port 埠, 一旦這個埠上有了連線, 該連線就經過安全通道轉發出去, 同時和遠端主機的host:hostport 埠建立連線. 

在本機內網ip下執行

sudo ssh -i /home/user/Project/tunnel/ssh/id_rsa  -N -f -L 2222:35.185.157.173:22 35.185.157.173

sudo ssh -i /home/user/Project/tunnel/ssh/id_rsa localhost -p 2222


將遠端主機(伺服器)的某個埠轉發到本地端指定機器的指定埠:

遠端主機上分配了一個 socket 偵聽 port 埠, 一旦這個埠上有了連線, 該連線就經過安全通道轉向出去, 同時和本地主機的host:hostport 埠建立連線.

在本機內網ip下執行

sudo ssh -i /home/user/Project/tunnel/ssh/id_rsa  -N -f -R 2223:127.0.0.1:22 35.185.157.173

在遠端主機上執行

sudo ssh -p 2223 user@localhost


登錄遠端主機

在本機內網ip下執行

sudo ssh -i /home/user/Project/tunnel/ssh/id_rsa  -N -f -L 2222:35.185.157.171:22 35.185.157.171

sudo ssh -i /home/user/Project/tunnel/ssh/id_rsa localhost -p 2222


從遠端主機上連回本機

在本機內網ip下執行

sudo ssh -i /home/user/Project/tunnel/ssh/id_rsa  -N -f -R 2223:127.0.0.1:22 35.185.157.171

在遠端主機上執行

sudo ssh -p 2223 user@localhost


查看sshd監聽狀態

sudo netstat -lnput | grep ssh


REF

SSH的埠轉發:本地轉發Local Forward和遠端轉發Remote Forward

使用SSH反向隧道進行內網穿透

Linux 的 SSH 安全加密連線指令使用教學、設定檔配置範例

SSH反向連線及Autossh

沒有留言:

張貼留言