1. 程式人生 > >SSH反向代理實現外網訪問內網伺服器

SSH反向代理實現外網訪問內網伺服器

機器狀況

機器號 IP 使用者名稱 備註
A 192.168.1.130 usr_a 目標伺服器,在區域網中,可以訪問 A
B B.B.B.B usr_b 代理伺服器,在外網中,無法訪問 A
C - - 可以直接訪問 B,無法直接訪問 A

目標

從 C 機器使用 SSH 訪問 A

解決方案

在 A 機器上做到 B 機器的反向代理;在 B 機器上做正向代理本地埠轉發

環境需求

  • 每臺機器上都需要 SSH 客戶端
  • A、B 兩臺機器上需要 SSH 伺服器端。通常是 openssh-server。

    在 Ubuntu 上安裝過程為

    sudo apt-get install openssl-server
    

實施步驟

  1. 建立 A 機器到 B 機器的反向代理【A 機器上操作】

    ssh -fCNR <port_b1>:localhost:22 [email protected]
    

    <port_b1> 為 B 機器上埠,用來與 A 機器上的22埠繫結。

  2. 建立 B 機器上的正向代理,用作本地轉發。做這一步是因為繫結後的 埠只支援本地訪問【B 機器上操作】

    ssh -fCNL "*:<port_b2>:localhost:<port_b1>' localhost
    

    <port_b2> 為本地轉發埠,用以和外網通訊,並將資料轉發到 <port_b1>

    ,實現可以從其他機器訪問。

    其中的*表示接受來自任意機器的訪問。

  3. 現在在 C 機器上可以通過 B 機器 ssh 到 A 機器

    ssh -p <portb2> [email protected]
    

至此方案完成。

SSH 引數解釋

-f 後臺執行
-C 允許壓縮資料
-N 不執行任何命令
-R 將埠繫結到遠端伺服器,反向代理
-L 將埠繫結到本地客戶端,正向代理
SSH 自動輸入密碼登入伺服器
安裝 sshpass 
sudo apt-get install sshpass安裝完成後使用sshpass允許你用 -p 引數指定明文密碼,然後直接登入遠端伺服器。例如:
sshpass -p '你的密碼' ssh 使用者名稱@伺服器ip地址用 '-p' 指定了密碼後,還需要在後面跟上標準的 ssh 連線命令

相關推薦

SSH反向代理實現訪問伺服器

機器狀況 機器號 IP 使用者名稱 備註 A 192.168.1.130 usr_a 目標伺服器,在區域網中,可以訪問 A B B.B.B.B usr_b 代理伺服器,在外網中,無法訪問 A C - - 可以直接訪問 B,無法直接訪問 A

SSH反向連線及Autossh 實現訪問樹莓派

需要一臺vps伺服器,樹莓派連上vps,再通過vps來訪問樹莓派 1.在樹莓派上設定 sudo screen -S sshtest ssh -R 19999:localhost:22 你的vps使用者名稱@你vps的ip      意思:將vps上的19999埠與樹莓派的

通過ssh反向隧道及nginx反向代理實現控制nodemcu晶片

基本思路:通過ssh反向隧道實現外網伺服器埠到內網中繼伺服器埠的轉發,通過配置內網中級伺服器nginx反向代理,將外網發過來的請求轉發到目標伺服器上。最後實現通過訪問外網ip轉到訪問內網的目標伺服器。 (一)ssh反向隧道將外網伺服器埠轉發到內網中繼伺服器指定埠 (1)首

ssh 反向代理 訪問

[[email protected] ~]$ssh -C  -f -N -D 3345 -p 3345 [email protected] The authenticity of host '[localhost]:3345 ([127.0.0.1]:3345)' can't be es

Ngrok反向代理實現訪問

該篇部落格分享ngrok,這裡使用國內作者的ngrok,國外有ngrok,但是訪問國內訪問比較慢 ngrok 是一個反向代理,通過在公共的端點和本地執行的 Web 伺服器之間建立一個安全的通道。ngrok 可捕獲和分析所有通道上的流量,便於後期分析和重

利用反向SSH訪問伺服器

學院的伺服器在學院的內網,出了學院就不能訪問,在宿舍、家裡學習很不方便沒有伺服器的話。之前一直用TeamViewer,但是用著不舒服。最近新找到一個辦法,就是利用外網伺服器以及反向SSH搭一條通道,使

ssh反向代理實現NAT穿透[ssh版teamviewer]

由於實驗室伺服器沒有公網IP,如果在校外網的話只能通過teamviewer遠端桌面連線,然而teamviewer的資料傳輸是基於影象的,反應太慢了,所以一直在尋找ssh版的teamviewer,經過谷歌,發現只需要一臺公網伺服器作為中轉站,就可以實現在任何地方登

訪問的解決方案--反向SSH

問題:    當你在不在公司或者不在學校的時候,如果想要用secureCRT訪問內網的伺服器,但是內網IP對外網是不可見的,這時怎麼辦?又或者內網的網站只對有內網的IP可以訪問,但是你連線的是外網,想要

Holer實現訪問Oracle資料庫

外網訪問內網Oracle資料庫 內網主機上安裝了Oracle資料庫,只能在區域網內訪問,怎樣從公網也能訪問本地Oracle資料庫? 本文將介紹使用holer實現的具體步驟。 1. 準備工作 1.1 安裝Java 1.7及以上版本 執行命令java -version檢查Java安裝和配置是否正確。

使用SecureCRT轉發功能,實現訪問服務

A: 內網Linux系統,不能上外網 ip:192.168.6.10 有如下服務     22埠   ssh2 B: (windows系統) 內網主機,可以訪問A主機,可以通過閘道器訪問C主機. C: 外網Linux系統,公網ip:202.108.16.5 有如

使用電信光貓加路由器實現穿透,訪問

準備工作:1. 需註冊一個花生殼賬號和購買一個殼域名(可以免費獲取殼域名)2. 電腦下載安裝花生殼客戶端3. 使用電信光貓超級管理員密碼獲取器獲取光貓超級密碼4. 寬頻賬號與寬頻密碼(光貓配置後,需登入路由器上網,路由器需使用寬頻賬號與密碼登入上網)一.電信光貓配置1.1 在

如何通過SecureCRT轉發功能實現訪問服務

公司有臺開發伺服器有外網地址,開放了ssh服務,上面裝有mysql服務,MySQL服務埠3306是沒有對外網開放的。所以如果在家要連線這臺伺服器的mysql資料庫得另外想其他辦法。好在SecureCRT提供了埠轉發的功能,能夠通過SecureCRT將內網埠對映到本地埠。 方

通過反向ssh連線+socks5+web-proxy來訪問資源

最近碰到個這麼個問題,校園網內的資源只能在校園網內訪問,在寢室裡連不到校園網時候就無法訪問了,很不方便。所以想了一個方案來解決這個問題。 所需硬體:一臺有公網IP的linux主機 A,一臺在校園網內的Linux主機 B。 所需軟體:openssh, dele

簡單物聯網:訪問路由器下樹莓派Flask服務器

分配 amp con 樹莓派 轉發規則 添加 局域網 輸入 pytho 最近做一個小東西,大概過程就是想在教室,宿舍控制實驗室的一些設備。 已經在樹莓上搭了一個輕量的flask服務器(在樹莓派下搭flask在其他隨筆有說明),在實驗室的路由器下,任何設備都是可以訪問的;但是

怎樣從訪問Nginx?

本地安裝了一個Nginx,只能在區域網內訪問,怎樣從外網也能訪問到本地的Nginx呢?本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動Nginx 預設安裝的Nginx埠是80。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各

怎樣從訪問php-fpm?

acc cal 選擇 dem org inter 127.0.0.1 code address 本地安裝了一個php-fpm,只能在局域網內訪問,怎樣從外網也能訪問到本地的php-fpm呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動php-fpm 默認安裝的php-f

怎樣從訪問數據庫?

平臺 主機 tree 數據庫 步驟 命令 fff 客戶端 映射 本地安裝了一個數據庫,只能在局域網內訪問到,怎樣從外網也能訪問到本地的數據庫呢?本文將介紹具體的實現步驟。 1. 準備工作 1.1 安裝並啟動數據庫 默認安裝的數據庫端口是1024。 2. 實現步驟 2.1 下

怎樣從訪問Jetty?

本地安裝了一個Jetty,只能在區域網內訪問,怎樣從外網也能訪問到本地的Jetty呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動Jetty 預設安裝的Jetty埠是8080。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各種OS系統

怎樣從訪問Django?

本地安裝了一個Django,只能在區域網內訪問,怎樣從外網也能訪問到本地的Django呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動Django 預設安裝的Django埠是8000。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各種

怎樣從訪問Jboss?

本地安裝了一個Jboss,只能在區域網內訪問,怎樣從外網也能訪問到本地的Jboss呢?本文將介紹具體的實現步驟。 準備工作 安裝並啟動Jboss 預設安裝的Jboss埠是8080。 實現步驟 下載並解壓holer軟體包 Holer軟體包:holer-xxx.tar.gz Holer支援各種OS系統