ChatGPTさんによると、
SSLHは、複数のプロトコルを1つのポートで同時に受け付けることができるオープンソースのプログラムです。具体的には、HTTP、HTTPS、SSH、OpenVPNなどのプロトコルを同じポート番号で受け付けることができます。
ChatGPT
SSLHは、ポート番号を節約するために使用されます。通常、各プロトコルには異なるポート番号が必要ですが、SSLHを使用することで、1つのポート番号で異なるプロトコルを切り替えながら使用できます。
また、SSLHは、ファイアウォールの背後にあるサーバーにアクセスするために、HTTPS経由でSSH接続を行うような場合にも使用できます。
だそうです。
インストール手順は以下に。先頭にオマジナイを書けば、.shファイルとして使えるはずです。
mkdir -p ~/docker/sslh && cd $_
#docker-compose.ymlを作る.
cat << EOF > docker-compose.yml
version: '3'
services:
sslh:
build:
context: sslh
container_name: sslh
ports:
- "443:443"
environment:
TZ: Asia/Tokyo
LISTEN_IP: 0.0.0.0
LISTEN_PORT: 443
SSH_HOST: 192.168.0.22
SSH_PORT: 22
OPENVPN_HOST: openvpn-as
OPENVPN_PORT: 9443
HTTPS_HOST: nginx-proxy
HTTPS_PORT: 443
restart: always
networks:
nginx-proxy-network:
aliases:
- sslh.example.com
openvpn-network:
aliases:
- sslh.example.com
networks:
nginx-proxy-network:
external: true
openvpn-network:
external: true
EOF
mkdir sslh
#Dockerfileを作る
cat << EOF > sslh/Dockerfile
FROM alpine:latest
RUN apk update && \
apk add --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ sslh && \
rm -rf /var/cache/apk/*
ADD entry.sh /usr/local/bin/entry.sh
RUN chmod +x /usr/local/bin/entry.sh
ENTRYPOINT ["/usr/local/bin/entry.sh"]
EOF
#entry.shを作る.
cat << 'EOF' > sslh/entry.sh
#!/bin/sh
# コマンド表示
echo "sslh -f -u root --listen=${LISTEN_IP}:${LISTEN_PORT} \
--ssh=${SSH_HOST}:${SSH_PORT} \
--tls=${HTTPS_HOST}:${HTTPS_PORT} \
--openvpn=${OPENVPN_HOST}:${OPENVPN_PORT}"
# コマンド実行
sslh -f -u root --listen=$LISTEN_IP:$LISTEN_PORT \
--ssh=$SSH_HOST:$SSH_PORT \
--tls=$HTTPS_HOST:$HTTPS_PORT \
--openvpn=$OPENVPN_HOST:$OPENVPN_PORT
EOF
cd sslh
docker-compose pull
docker-compose build --no-cache
docker-compose up -d
ポイントは以下。
- OPENVPN_HOST:この後作るopenvpnのコンテナの名前。
- OPENVPN_PORT:この後作るopenvpnのポート番号。443だと他のコンテナと被るので適当に9443とした。
- OPENVPN_PORT:この後作る、プロキシもどきのコンテナ名
- OPENVPN_PORT:こちらのコンテナで443ポートを使う。
- SSH_HOST、SSH_PORT:ssh接続を443番ポートで使うときの設定。特に使う予定が無ければ、存在しないIP何かを書いておけばいいのかな?今回は適当に書いています。SSH通信は他の番号を使ってるので。
参考にしたHPは以下。
DockerでSSLH!貴重な443番ポートでHTTPS、OpenVPN、SSHを同時に待ち受ける方法 | 小茂根の暮らし
https://komone-life.com/2020/03/24/how-to-install-sslh/