用SSH訪問內網主機的方法


如今的互聯網公司通常不會直接自己直接配主機搭建服務器了,而是采用了類似阿里雲的這種雲主機,當應用變得越來越大了之后,就不可避免地增加主機,而出於成本考慮,不可能給每一台主機都分配公網帶寬,所以實際的情況可能會變成這樣:

內網IP為10.51.15.12和10.51.15.13的兩台主機並沒有外網帶寬,通常是作為后端數據庫服務器或者后端業務邏輯處理服務器使用,這樣我們會遇到一個問題:無法直接用SSH登錄這兩台服務器,如何解決這個問題?——當然是借助帶有公網IP的服務器“中轉”一下了,如下圖:

考慮到SSH其實走的是TCP協議,我們只需要在10.51.15.11上安裝和配置一個TCP中轉服務器即可,NGINX就具有這個功能。如何安裝和配置NGINX請移步這里:簡易NGINX TCP反向代理設置

這里介紹的內容和上述文章沒有太多不同,僅僅在配置上有一點點不一樣(而且還更簡單),編輯/etc/nginx/nginx.conf

stream{
    upstream ssllink12{
        server 10.51.15.12:22 max_fails=3 fail_timeout=10s;
    }
    
    upstream ssllink13{
        server 10.51.15.13:22 max_fails=3 fail_timeout=10s;
    }

    server{
        listen 1118;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;
        proxy_pass ssllink12;
    }
    
    server{
        listen 1119;
        proxy_connect_timeout 20s;
        proxy_timeout 5m;
        proxy_pass ssllink13;
    }
}

配置很簡單,意思也很明確,將連接至1118端口的TCP請求轉至10.51.15.12:22,將連接至1119端口的TCP請求轉至10.51.15.13:22。

重啟NGINX:

systemctl restart nginx

如有必要,配置一下防火牆:

firewall-cmd --zone=public --add-port=1118/tcp --permanent
firewall-cmd --zone=public --add-port=1119/tcp --permanent
firewall-cmd --reload

然后直接用SSH試試看吧。

NGINX采用了“透明”的工作模式,以致SSH客戶端不知曉自己的連接請求其實已經被轉交到一台內網主機中了。


免責聲明!

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



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