nginx代理ssh協議


購買了阿里雲多台服務器,其中只有一台服務器,開通了外網,其他服務器沒有外網,訪問其他服務器的時候,需要先登錄有外網的服務器A,然后在服務器A上再通過ssh,訪問目標服務器,這樣很麻煩。

為了解決這個問題,我們在A服務器上用我們萬能的nginx 代理ssh 協議的方式,使得我們客戶端電腦可以直接訪問目標服務器。

環境准備:A服務器需要安裝nginx,其中nginx,是通過 yum 安裝的普通nginx,沒有增加任何其他模塊、依賴、包等。

 

在nginx的主配置文件中,最下方,所有的{} 以外,增加 一個代碼塊(和http{}平級)如下:

stream {
    include /etc/nginx/stream.d/*.conf;
}

然后 在/etc/nginx/ 文件夾下,新建 stream.d 文件夾

接下來,在stream.d 文件夾中,創建一個文件,我這里用了協議名和ip做文件名

vim ssh37.conf

下一步的時候,輸入文件內容

    upstream ssh37 {
        server  172.19.89.37:22;
    }
    server {
        listen     12201;
        proxy_pass ssh37;
        proxy_connect_timeout 1h;
        proxy_timeout 1h;
    }

其中  upstream 后的ssh37 是命名,隨便取,只要不重復就可以

upstream中 server 后的ip 是局域網服務器的ip,22 是這個服務器的ssh開放端口,如果有修改,對應修改即可

server 下面的 listen 后的 12201 就是客戶端最終訪問服務器時用的端口(如果是阿里雲,需要注意,這個端口需要在安全策略中開通)

proxy_pass   后的ssh37  和upstream 后面的ssh37 一致即可

proxy_connect_timeout   連接時間,根據實際情況修改即可

proxy_timeout  連接時間,根據實際情況修改即可

 

最后我們保存退出,執行重新加載配置文件即可完成配置

nginx -s reload

 

接下來我們可以通過客戶端進行測試。

 

ssh 用戶名@服務器A的外網ip -p 12201  

 

如果沒有問題,即可看到要求輸入密碼的提示框,輸入后即可登錄

 


免責聲明!

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



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