SSLH:让 HTTPS 和 SSH 共享同一个端口
创始人
2024-03-02 03:21:39
0

SSLH - Share A Same Port For HTTPS And SSH

一些 ISP 和公司可能已经阻止了大多数端口,并且只允许少数特定端口(如端口 80 和 443)访问来加强其安全性。在这种情况下,我们别无选择,但同一个端口可以用于多个程序,比如 HTTPS 端口 443,很少被阻止。通过 SSL/SSH 多路复用器 SSLH 的帮助,它可以侦听端口 443 上的传入连接。更简单地说,SSLH 允许我们在 Linux 系统上的端口 443 上运行多个程序/服务。因此,你可以同时通过同一个端口同时使用 SSL 和 SSH。如果你遇到大多数端口被防火墙阻止的情况,你可以使用 SSLH 访问远程服务器。这个简短的教程描述了如何在类 Unix 操作系统中使用 SSLH 让 https、ssh 共享相同的端口。

SSLH:让 HTTPS、SSH 共享端口

安装 SSLH

大多数 Linux 发行版上 SSLH 都有软件包,因此你可以使用默认包管理器进行安装。

在 Debian、Ubuntu 及其衍生品上运行:

$ sudo apt-get install sslh

安装 SSLH 时,将提示你是要将 sslh 作为从 inetd 运行的服务,还是作为独立服务器运行。每种选择都有其自身的优点。如果每天只有少量连接,最好从 inetd 运行 sslh 以节省资源。另一方面,如果有很多连接,sslh 应作为独立服务器运行,以避免为每个传入连接生成新进程。

安装 sslh

在 Arch Linux 和 Antergos、Manjaro Linux 等衍生品上,使用 Pacman 进行安装,如下所示:

$ sudo pacman -S sslh

在 RHEL、CentOS 上,你需要添加 EPEL 存储库,然后安装 SSLH,如下所示:

$ sudo yum install epel-release
$ sudo yum install sslh

在 Fedora:

$ sudo dnf install sslh

如果它在默认存储库中不可用,你可以如这里所述手动编译和安装 SSLH。

配置 Apache 或 Nginx Web 服务器

如你所知,Apache 和 Nginx Web 服务器默认会监听所有网络接口(即 0.0.0.0:443)。我们需要更改此设置以告知 Web 服务器仅侦听 localhost 接口(即 127.0.0.1:443localhost:443)。

为此,请编辑 Web 服务器(nginx 或 apache)配置文件并找到以下行:

listen 443 ssl;

将其修改为:

listen 127.0.0.1:443 ssl;

如果你在 Apache 中使用虚拟主机,请确保你也修改了它。

VirtualHost 127.0.0.1:443

保存并关闭配置文件。不要重新启动该服务。我们还没有完成。

配置 SSLH

使 Web 服务器仅在本地接口上侦听后,编辑 SSLH 配置文件:

$ sudo vi /etc/default/sslh

找到下列行:

Run=no

将其修改为:

Run=yes

然后,向下滚动一点并修改以下行以允许 SSLH 在所有可用接口上侦听端口 443(例如 0.0.0.0: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:要求在这个特定的用户身份下运行。
  • –listen 0.0.0.0:443:SSLH 监听于所有可用接口的 443 端口。
  • –sshs 127.0.0.1:22 : 将 SSH 流量路由到本地的 22 端口。
  • –ssl 127.0.0.1:443 : 将 HTTPS/SSL 流量路由到本地的 443 端口。

保存并关闭文件。

最后,启用并启动 sslh 服务以更新更改。

$ sudo systemctl enable sslh
$ sudo systemctl start 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 访问远程服务器:

$ ssh -p 443 [email protected]

示例输出:

[email protected]'s password:
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Wed Aug 14 13:11:04 IST 2019

System load: 0.23 Processes: 101
Usage of /: 53.5% of 19.56GB Users logged in: 0
Memory usage: 9% IP address for enp0s3: 192.168.225.50
Swap usage: 0% IP address for enp0s8: 192.168.225.51

* Keen to learn Istio? It's included in the single-package MicroK8s.

https://snapcraft.io/microk8s

61 packages can be updated.
22 updates are security updates.


Last login: Wed Aug 14 13:10:33 2019 from 127.0.0.1

通过 SSH 使用 443 端口访问远程系统

看见了吗?即使默认的 SSH 端口 22 被阻止,我现在也可以通过 SSH 访问远程服务器。正如你在上面的示例中所看到的,我使用 https 端口 443 进行 SSH 连接。

我在我的 Ubuntu 18.04 LTS 服务器上测试了 SSLH,它如上所述工作得很好。我在受保护的局域网中测试了 SSLH,所以我不知道是否有安全问题。如果你在生产环境中使用它,请在下面的评论部分中告诉我们使用 SSLH 的优缺点。

有关更多详细信息,请查看下面给出的官方 GitHub 页面。

资源:


via: https://www.ostechnix.com/sslh-share-port-https-ssh/

作者:sk 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

富达基金管理(中国)有限公...
富达基金管理(中国)有限公司旗下基金2025年 第4季度报告提示性...
2026-01-22 12:51:09
马斯克宣布开源
马斯克近日宣布,社交平台 来源:https://www.cnu.c...
2026-01-20 21:20:42
智谱GLM-4.7-Fla...
IT之家 1 月 20 日消息,智谱 GLM-4.7-Flash ...
2026-01-20 09:46:59
被Jim Fan点赞!全球...
编辑|+0 提到具身智能,你首先会想到什么? 是宇树在春晚惊艳亮相...
2026-01-12 11:17:32
AI 时代,你的品牌正在从...
在过去的几个月里,如果你依然只盯着百度热搜或谷歌排名,那么作为一个...
2026-01-10 06:15:56
AI 搜索时代,品牌如何被...
在传统的搜索引擎时代,品牌主们习惯了通过 SEO( 搜索引擎优化)...
2026-01-08 11:20:22

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...