为HTTPS和SSH共享相同的端口

  • 为HTTPS和SSH共享相同的端口已关闭评论
  • 4 views
  • A+
所属分类:linux命令

一些互联网服务提供商和公司公司可能已经阻止了大多数端口,并且只允许少数特定端口(如端口80和443)来加强其安全性。在这种情况下,我们别无选择,但为多个程序使用相同的端口,比如HTTPS端口443,很少被阻止。这是SSLH(一种SSL / SSH多路复用器)的帮助。它将侦听端口443上的传入连接。更简单地说,SSLH允许我们在Linux系统上的端口443上运行多个程序/服务。因此,您可以同时使用同一端口同时使用SSL和SSH。如果您遇到大多数端口被防火墙阻止的情况,您可以使用SSLH访问远程服务器。

安装 SSLH

SSLH适用于大多数Linux发行版,因此您可以使用默认包管理器进行安装。

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

sudo pacman -S sslh

在 Debian, Ubuntu, 或者衍生版本运行:

sudo apt-get install sslh

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

sudo yum install epel-release
sudo yum install sslh

在 Fedora上:

sudo dnf install sslh

配置Apache或Nginx Web服务器

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

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

listen 443 ssl;

并将其更改为:

listen 127.0.0.1:443 ssl;

如果你在Apache中使用Virutalhosts,请确保你也改变了它。

VirtualHost 127.0.0.1:443

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

配置SSLH

使网络服务器仅在本地接口上侦听后,编辑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流量路由到localhost上的端口22。
  • –ssl 127.0.0.1:443 : 将HTTPS / SSL流量路由到localhost上的端口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 sk@192.168.43.2
sk@192.168.43.2's password: 
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-89-generic x86_64)

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

Last login: Mon Aug 14 15:52:20 2017 from 192.168.43.192
sk@ubuntuserver:~$

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

关于命令详情,安卓手机请安装安卓客户端查询,安卓客户端地址:

为HTTPS和SSH共享相同的端口

  • 安卓客户端下载
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar