1. 程式人生 > >使用ssh隧道+privoxy實現Linux全局代理

使用ssh隧道+privoxy實現Linux全局代理

分組 doc rest 會話 基於 private vim linu apt

使用ssh隧道+privoxy實現Linux全局代理

ssh簡介

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可運行SSH。

SSH提供兩種級別的安全驗證:

  • 第一種級別(基於口令的安全驗證)
  • 第二種級別(基於密匙的安全驗證)

    SSH 主要由三部分組成:

  • 傳輸層協議 [SSH-TRANS]
  • 用戶認證協議 [SSH-USERAUTH]
  • 連接協議 [SSH-CONNECT]
    建立ssh本地監聽socket,可使用ssh -D命令,指定本地 "dynamic" 應用程序級端口轉發。 通過分配一個socket來偵聽本地的端口,。 連接綁定的端口時, 連接將數據轉發至安全通道上, 然後使用應用程序協議確定從遠程計算機連接到要訪問的位置。支持 SOCKS4 和 SOCKS5 協議, ssh 可以作為socks server。

用法:
ssh -D 0.0.0.0:12345 -i /private/key/file username@servera -p serverport
以上命令使用ssh連接至servera,並監聽本地所有網卡的12345端口,通過本地12345端口轉發的數據訪問,都將通過ssh隧道發送至servera端進行訪問。由此實現對部分不可達網絡的訪問,如servera的內部網絡。

Linux全局代理

Linux全局代理可使用http_proxy變量進行定義,http_proxy為http協議,不能直接通過socket協議進行代理轉發,所以需要使用privoxy來進行socket2http的操作

privoxy

首先安裝很簡單

apt-get install privoxy
安裝完成後編輯其配置文件

vim /etc/privoxy/config
#添加如下內容
forward-socks5 / 10.120.1.241:12345 .

10.120.1.241為本機ip ,12345為通過ssh隧道與外部server端建立ssh隧道連接的其他機器。 完成後重啟privoxy
/etc/init.d/privoxy restart
privoxy將會監聽在8118端口上,當然也可以在配置文件中進行修改,然後在設置http_proxy為privoxy的監聽ip:port即可。此處為
export http_proxy=127.0.0.1:8118
完成後即可以servera的身份進行網絡訪問,用處可以為下載外網資源,如docker hub、git等上的國內不容易下載文件等。

使用ssh隧道+privoxy實現Linux全局代理