【轉】如何在同一個端口上運行多個程序或服務


 

 

 

在實際生產環境中,大部分互聯網服務提供商或公司可能已經阻止了大多數網絡端口,並且只允許使用少數特定端口(如:80 和 443)來進行服務訪問,以加強其安全性。

在這種情況下,如果我們需要將更多的服務暴露在公網上,我們該怎么辦呢?這時你別無選擇,只有為多個程序共用相同的端口,比如:共用 HTTPS 的端口 443。

那怎么樣才能實現不同程序復用相同端口呢,這時你就需要 SSLH 這款神器。
SSLH 是一款采用 C 語言編寫的開源端口復用軟件,目前支持 HTTP、SSL、SSH、OpenVPN、Tinc、XMPP 等多種協議識別。它主要運行於 *nix 環境,源代碼托管在 GitHub 上。 項目地址:https://github.com/yrutschle/sslh

更簡單地說,SSLH 允許我們在 Linux 系統上的同一端口上運行多個程序/服務。因此,您可以用同一端口來同時使用兩種服務。如果你遇到大多數端口被防火牆阻止的情況,SSLH 就可以幫你派上大用場。下面我們就來看一個 SSL 和 SSH 同時復用同一端口的實例。

一 安裝 SSLH
SSLH 適用於大多數 Linux 發行版,因此您可以使用默認包管理器進行安裝。

忽略此部分

 

 

接下來,我們需要修改 SSLH 的配置文件的如下幾處。

$ sudo vi /etc/default/sslh
# 找到以下行:
Run=no

# 並將其更改為:
Run=yes

# 修改以下行以允許 SSLH 在所有可用接口上偵聽端口 443。
DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

修改完成后,記得保存並關閉配置文件。這里在簡單說下幾個選項的含義

-–user sslh : 用此指定的用戶名運行 SSLH。
-–listen 0.0.0.0:443 : 指定 SSLH 在所有接口上監聽 443 端口。
-–sshs 127.0.0.1:22 : 將 SSH 流量轉發到 localhost 上的 22 端口。
-–ssl 127.0.0.1:443 : 將 HTTPS/SSL 流量轉發到 localhost 上的 443 端口。

啟動 SSLH 服務

$ sudo systemctl enable sslh

$ sudo systemctl start sslh
五 測試 SSLH 服務
驗證 SSLH 守護程序是否正在偵聽 443 端口。

$ ps -ef | grep sslh 
sslh 2746 1 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sslh 2747 2746 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sk 2754 1432 0 15:51 pts/0 00:00:00 grep --color=auto sslh

最后,我們來驗證下使用 443 端口進行 SSH 和 HTTPS 訪問。

參考文檔

https://linux.cn/article-11247-1.html
https://www.ostechnix.com/sslh-share-port-https-ssh/
https://huataihuang.gitbooks.io/cloud-atlas/service/ssh/sslh_multi_service_in_one_port.html
https://it.baiked.com/linux/linuxcommon/4525.html

 

————————————————
原文鏈接:https://blog.csdn.net/weixin_44221613/java/article/details/102783379


免責聲明!

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



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