ssh 反向隧道內網穿透


反向代理

ssh  -fCNR

正向代理
ssh  -fCNL

-f 后台執行ssh指令
-C 允許壓縮數據
-N 不執行遠程指令
-R 將遠程主機(服務器)的某個端口轉發到本地端指定機器的指定端口
-L 將本地機(客戶機)的某個端口轉發到遠端指定機器的指定端口
-p 指定遠程主機的端口

 

 1、先在目標機器建立到跳板機的反向代理:ssh -fCNR 7280:localhost:22 root@123.123.123.123

 2、服務器建立正向代理:ssh -fCNL *:1234:localhost:7280 localhost

  在此1234端口為本地轉發端口,負責和外網進行通信,並將數據轉發的7280這個端口,實現了可以從其他機器訪問的功能。同時,*號表示可以接受任何IP的訪問。

 3、此時,就能從外網直接通過1234 端口訪問到內網目標機器了

  ssh  pi@localhost -p1234

 

3.1  ssh-keygen -t rsa     # 生產ssh密鑰

 4、免密登錄在目標機執行(將公鑰發送給目標機器)

  ssh-copy-id  目標機用戶名@公網IP  -p1234

 5、autossh 自動重連

   目標機先安裝autossh    安裝命令 apt-get install update,  apt-get install upgrade,  apt-get install autossh;

autossh -M 5678 -NfR port:localhost:22 root@公網ip # -M參數,這個參數指定一個端口,這個端口是外網的B機器用來接收內網A機器的信息,
如果隧道不正常而返回給A機器讓他實現重新連接。

  在跳板機上 netstat -pan |grep port 如果 只監聽127.0.0.1,可以修改/etc/ssh/sshd_config/設置GatewayPorts為yes

目標機代碼如下:

from Base.setting import setting
import os

def start_autoSSH():
    GuardianID = setting.mncode[-4:]
    GuardianID = str(int(GuardianID)+8000)

    command =  'autossh -M 5678 -NfR %s:localhost:22 root@%s' % (GuardianID,setting.ssh_server)
    print(command)
    os.system(command)


start_autoSSH()


# ssh -NfR 1011:localhost:22 root@46.96.101.117

 


免責聲明!

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



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