Docker中部署内网云隧道
投稿作者:匿名大佬
备注:ssh端口映射中,远程端口必须是80端口,本地的ip:port可以自由定义
1. Docker指令部署 内网云隧道
创建Dockerfile文件
cat > Dockerfile <<'EOF'
FROM alpine:3.8
RUN addgroup -S nwy \
&& adduser -S -D -H -s /bin/false -g "nwy" -G nwy nwy \
&& set -x \
&& apk add --no-cache openssh-client \
&& mkdir -p /home/nwy/.ssh && chown nwy:nwy /home/nwy/.ssh && \
echo '#!/bin/sh' >> /usr/local/bin/askpass && \
echo 'echo $ASKPASS' >> /usr/local/bin/askpass && \
echo '#!/bin/sh' >> /usr/local/bin/ssh_no_pass && \
echo 'export SSH_ASKPASS=/usr/local/bin/askpass' >> /usr/local/bin/ssh_no_pass && \
echo 'export DISPLAY=:0' >> /usr/local/bin/ssh_no_pass && \
echo 'setsid ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking no" "$@"' >> /usr/local/bin/ssh_no_pass && \
chmod +x /usr/local/bin/askpass /usr/local/bin/ssh_no_pass
USER nwy
WORKDIR /tmp
# ⚠️ 匿名隧道已废弃,请使用注册账户。详见 [快速开始](./快速开始)
CMD ["/usr/local/bin/ssh_no_pass", "-R", "80:172.17.0.1:8000", "sh@sh3.neiwangyun.net"]
EOF
构建镜像命令:docker build -t nwy .
假设在本机有一服务于端口172.17.0.1:8000(如python3 -m http.server 8000)
开启匿名映射:docker run -it --rm nwy
2. Docker-compose指令部署 本地服务+内网云隧道
以下为例向docker-compose.yaml中添加隧道服务,
cat > docker-compose.yaml <<'EOF'
version: '3.3'
services:
web:
image: python
command: python3 -m http.server 8888
networks:
tunnel:
nwy:
build: ./
hostname: nwy
depends_on:
- web
environment:
- ASKPASS=password-for-private-tunnel
command: /usr/local/bin/ssh_no_pass -R 80:web:8888 hk@hk3.neiwangyun.net
restart: unless-stopped
networks:
tunnel:
networks:
tunnel:
EOF
使用docker-compose up即可开启,注意根据自己需要修改services->nwy->command映射的端口等部分,同时隧道密码可以使用环境变量ASKPASS传递。