利用sslh实现端口复用

有时候会出现多个服务需要使用同一个端口的情况,除了换端口以外,还有一个解决办法——使用sslh进行端口复用。下面介绍Debian下ssl/ssh复用443端口的配置方法。

一、前提
首先确保nginx正确配置了https页面,并且只监听本机443端口(localhost:443,其他端口也可);openssh可以保持监听22端口不变。
然后就是安装sslh:
apt-get install sslh
若出现提示框要求选择是xinetd还是standalone的时候,选择standalone。

二、配置sslh
sslh的配置很简单,就是修改/etc/default/sslh文件:

RUN=yes
DAEMON=/usr/sbin/sslh
DAEMON_OPTS="--user sslh --listen ***.***.***.***:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

其中,***.***.***.***是你运行这些服务的公网地址,例如VPS的公网IP。
配置好以后,可以重启sslh服务,或者重启机器。

三、测试
使用putty等工具访问443端口,以及使用浏览器访问https页面,相应的SSH/SSL请求应该能够正常返回。

本文为悠然居(https://wordpress.youran.me/)的原创文章,转载请注明出处!

3 thoughts on “利用sslh实现端口复用”

  1. 写两个socket占用一个服务端看看效果….

    请问listen ***.***.***.***那个,我可以写127.0.0.1么?
    CS的C和S都在本地..

    Google Chrome 25.0.1364.172 Google Chrome 25.0.1364.172 Windows 7 x64 Edition Windows 7 x64 Edition
    1. 最好不要写写127.0.0.1,因为可能会和https的监听端口冲突。或者你可以把https的默认端口改成其他的,不要都用443就是了。

      Firefox 19.0 Firefox 19.0 Windows XP Windows XP
    2. 测试自己写的两个程序就不用管这么多了,127.0.0.1也没问题。反正只要不要造成一个IP+端口上绑定多个服务就行了。

      Firefox 19.0 Firefox 19.0 Windows XP Windows XP

Leave a Reply

Your email address will not be published. Required fields are marked *