1. 程式人生 > >ssh端口轉發小結

ssh端口轉發小結

訪問 直接 代理 遠程轉發 ffffff mail 進行 size xxx

?

關於ssh端口

?

???? SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是, SSH 還能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”,這是因為SSH為其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例如,Telnet,SMTP,LDAP 這些 TCP 應用均能夠從中得益,避免了用戶名, 密碼以及隱私信息的明文傳輸。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許 SSH 的連接,也能夠通過將 TCP 端口轉發來使用 SSH 進行通訊

?

ssh端口轉發的兩大功能

?

兩大功能:

  • 加密 SSH Client 端至 SSH Server 端之間的通訊數據
  • 突破防火墻的限制完成一些之前無法建立的 TCP 連接

?

ssh端口轉發的三種方式

?

  • ssh端口本地轉發
  • ssh端口遠程轉發
  • ssh端口動態轉發
    ?
    1.本地轉發
    ?
    ???格式:ssh -L localport:remotehost:remotehostport sshserver
    ??????localport : 本地開啟的端口號
    ??????remotehost : 遠程要連接的IP
    ??????remotehostport : 轉發機的端口號
    ??????sshserver : 轉發機的IP
    ?
    ???選項:
    ??????-f 後臺啟用
    ??????-N 不打開遠程shell,處於等待狀態(不加-N則直接登錄進去)
    ??????-g 啟用網關功能
    ??????-L 啟動本地端口轉發
    ??????-D 動態轉發
    ?
    實驗一:ssh的本地轉發實現
    ??前提:C服務端,B跳板機,A客戶端,C的23端口只有B才能訪問,其他拒絕訪問,A和B可以通過ssh互相訪問
    技術分享圖片
    ??如圖所示:A的數據一旦telnet以後,數據會發送到本機9527端口,再在本機開一個隨機端口,充當ssh客戶端,再把數據流量發送到22端口的ssh服務端,收到數據以後,解密數據,臨時開一個隨機端口充當客戶端,再把流量發送到23端口telnet服務端
    ??實驗的流程:
    ????A->C 訪問被限制
    ????A-B->C 使用B主機作為跳板突破訪問限制
    ??操作如下:
    ??首先在C服務器上開啟23端口,添加策略
    iptables -F
    iptables -A INPUT -s B -p tcp  - -dport 23 -j ACCEPT
    iptables -A INPUT -p tcp --dport 23 -j REJECT

    ??這個時候A和C是不通的,連接拒絕,然後回到A上做本地轉發

    ssh -L 9527:A:23 -fN B

    ??現在A可以通過telnet利用9527端口與C進行訪問

    telnet 127.0.0.1 9527

    ?
    2.遠程轉發
    ?
    ???格式:-R sshserverport:remotehost:remotehostport sshserver
    ??????sshserverport 被轉發機器開啟的端口號
    ??????remotehost 最終連接機器的IP地址
    ??????remotehostport 被轉發機器的端口號
    ??????sshserver 被轉發機器的IP地址
    實驗二:ssh的遠程轉發
    前提:讓ssh service偵聽9527端口的訪問,如有訪問,就加密後通過ssh服務轉發請求到A,再由本機解密後轉發到telnet service:23
    ??實驗的流程:
    ????C->A (拒絕訪問)
    ????C-B->A (通過遠程代理,接受訪問)
    操作如下:
    首先C開啟郵件服務

    systemctl restart postfix 

    然後在ssh service 上打開隧道

    ssh -R 9527:C:25 -fN A

    最後在A上給C發郵件

    telnet 127.0.0.1 9527
    mail from:[email protected]
    rctp to:xxxx@xxxx

    3.動態轉發
    ?
    ???格式:ssh -D port user@sshserver
    ??????port :代理服務器開啟的代理端口
    ??????ssherver : 遠程的代理服務器地址
    ?
    技術分享圖片
    ?
    實驗三:ssh的動態轉發
    前提:在企業內部或者網絡中,基於安全策略不能隨便訪問互聯網某些站點,當用A訪問C時,本機的代理端口做為代理服務器,A的訪問請求被轉發到代理服務器上,由代理服務器替之訪問C
    實驗的流程:
    ????A -> C (拒絕訪問)
    ????A-B -> C (通過遠程代理,接受訪問)
    操作如下:
    首先C上添加策略,A拒絕訪問,只有B可以

    iptables -A INPUT -s A -j REJECT

    然後再B上輸入如下代碼,開啟代理

    ssh -fND 1080 root@B

    在A的裏驗證是否可以訪問

    curl --socks5 127.0.0.1 C   #默認端口就是1080

    基於網頁驗證,打開瀏覽器的設置,選擇代理設置,添加代理,在套接字一欄中填入
    ?
    技術分享圖片
    ?

當本地1080端口受到外部網站請求會轉發到外部服務器上面去,代理服務器通過1080端口把請求轉發到站點服務器上面去此時方可正常訪問外部站點

ssh端口轉發小結