[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > 其它 > 正文
如何使用SSH的Port Forwarding加密不安全的服務
本文出自:http://www.linuxforum.net/ 作者: 吳阿亭 Jephe (2001-09-12 12:00:00)

      一。簡介: 

      大多數人知道SSH是用來替代R命令集,是用加密的遠程登錄,文件傳輸,甚至加密的 
      FTP(SSH2內置), 因此SSH成為使用極廣的服務之一,不僅如此,SSH還有另一項非常有 
      用的功能,就是它的端口轉發隧道功能,利用此功能,讓一些不安全的服務象POP3, 
      SMTP,FTP,LDAP等等通過SSH的加密隧道傳輸,然,既然這些服務本身是不安全的, 
      密碼和內容是明文傳送的,現在其它中間媒介也沒無監聽了。 

      二。圖示: 

      SSH的加密隧道保護的只是中間傳輸的安全性,使得任何通常的嗅探工具軟件無法獲取發 
      送內容。如下圖: 
      假設客戶機和服務器都運行Linux,且以POP3為例。 


           C (pop3 server: S)              S 
        _______                         ________                 
        |     |                         |      | 
        |     |________POP3___________ >|      | 
        |_____|                         |______| 
                  (圖一:正常的POP3) 


      (圖一:正常的POP3) 


           C (pop3 server:C)               S (pop3 client: S) 
        _______                         ________                 
        |     |                         |      | 
        |     |--------SSH連接--------->|      | 
        |_____|                         |______| 
         
         
      (圖二:SSH隧道的POP3) 
       

      如圖一: 正常的POP3連接是客戶C向服務器S進行連接,C的設置是POP3服務器為S。 
      如圖二: 用SSH隧道的話,客戶C設置pop3服務器為自己(localhost),然設置SSH加密 
      隧道 
      ,如果設置在同樣的端口110聽取C的請求,則對C來說,pop3服務器是自己本身,端口也 
      是110 對S來說,看到的pop3請求地址不是來自C,而也是自己本身,因為有了SSH隧道。 



      三。SSH隧道設置 

      1. 首先必須在C和S上安裝SSH,確保SSH首先能工作。 
      2. 我們用簡單的一個命令如下: 

      # ssh -C -P -f sshaccount@S -L 110:S:110 sleep 7200 

      解釋如下: 
      -C 使用壓縮功能,是可選的,加快速度。 

      -P 用一個非特權端口進行出去的連接。 

      -f 一旦SSH完成認証並建立port forwarding,則轉入台運行。 

      sshaccount 客戶C在服務器S上的SSH連接帳號 

      -L 110:S:110 轉發C對本地端口110的連接到遠程服務器S的110端口。 
      也可以用高端端口(普通用戶使用,因為普通用戶不能在低1024的端口上建立SSH隧道) 
      如果用高端端口,如:-L 1110:S:110,這樣任何用戶都可建立這種加密隧道。 

      sleep 7200 一般用script,必須給一個命令,我們給一個sleep等待空 命令,這裡為 
      2小時,你可以 
      設為更長用保持整個連接過程, 如 sleep 100000000 。 

      四。檢驗 

      設置你就可以在客戶C上用 # telnet localhost 110 命令而連到 S 上收取email, 
      而整個過程也被加密。 

      五。其它常見問題: 

      1. 每次啟動該命令時需要輸入密碼以驗証SSH連接,你也可以用RSA鍵對的方法自動化 
      SSH連接。 
      看文章薈萃中的另一篇文章《如何在兩台linux服務器之間用RSA鍵對的方法SSH/SCP不需 
      密碼》 

      2. 如果你希望上面的命令永遠保持運行狀態,你可以用如下的scripts. 
      #!/bin/sh 
      while [ 1 ] ; do 
      ssh -C -P -f sshaccount@S -L 110:S:110 sleep 7200 
      sleep 1 
      done 

      3. 你可以在一個命令中用多個L 參數 ,如 -L 1110:S:110 -L 225:S:25 -L 
      389:S:389 

      4. 一些windows客戶端軟件,象netscape mail,不能改變pop3端口號,被強迫到110, 
      則你只能指定110 

      5. Linux下的fetchmail常用來自動接收郵件,可在.fetchmailrc中利用 
      preconnect參數預連接 ,指定上面的命令行。 

      6. 如果客戶端是windows, 則可用tera Term pro,參考 
      http://www.phys.washington.edu/Computing/winftpssh.html 


      吳阿亭 
      END  

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
如何使用SSH的Port Forwarding加密不安全的服務 (2001-09-12 12:00:00)
SSH使用及協議分析 (2001-09-12 07:00:01)
遠程連接(telnet/ftp/rsh/ssh)作為root的用法和總結 (2001-09-02 13:05:00)
安裝配置SSH(Secure Shell) (2001-06-25 17:04:00)
SSH protocol 1.5 會話密鑰可被恢復 (2001-05-21 10:08:01)
如何在 Linux 上安裝、使用 SSH2 (2001-05-10 20:28:41)
How to Run SSH2 on RedHat 6.2 (2001-04-21 18:05:54)
Linux系統中OpenSSH的安裝和配置 (2001-04-19 16:14:25)
 

★  樊強制作 歡迎分享  ★