networks:
- etssh-network
networks:
etssh-network:
driver: bridge优点:
- 容器隔离在独立网络中
- 不暴露到宿主机网络
- 只能通过 EasyTier 虚拟 IP 访问
network_mode: host # 危险!不要使用风险:
- 容器可以直接访问宿主机所有网络接口
- 增加容器逃逸风险
- 违反最小权限原则
cap_add:
- NET_ADMIN # 网络管理(必需)
- NET_RAW # 原始网络包(必需)
devices:
- /dev/net/tun:/dev/net/tun说明:
- 移除了
privileged: true(特权模式) - 移除了
SYS_ADMIN(系统管理权限) - 只保留 EasyTier 必需的权限
privileged: true # 危险!容器拥有宿主机所有权限
cap_add:
- SYS_ADMIN # 不需要步骤 1:生成 SSH 密钥对
ssh-keygen -t ed25519 -C "easytier-ssh-jumpserver"
# 或使用 RSA 4096
ssh-keygen -t rsa -b 4096 -C "easytier-ssh-jumpserver"步骤 2:配置 docker-compose.yml
volumes:
- ./ssh_keys:/root/.ssh:rw步骤 3:复制公钥到 ssh_keys 目录
mkdir -p ssh_keys
cp ~/.ssh/id_ed25519.pub ssh_keys/authorized_keys
chmod 600 ssh_keys/authorized_keys步骤 4:禁用密码认证(可选但推荐)
在 docker-compose.yml 中不设置 SSH_PASSWORD
优点:
- 比密码认证更安全
- 防止暴力破解
- 便于自动化管理
environment:
- SSH_PASSWORD=YourSecurePassword123 # 使用强密码!密码要求:
- ✅ 至少 16 个字符
- ✅ 包含大小写字母、数字、特殊字符
- ✅ 不要使用常见单词
- ✅ 定期更换
示例强密码:
Kj8#mP2$vL9@nQ4!xR7
volumes:
# SSH 密钥配置
- ./ssh_keys:/root/.ssh:rw
# EasyTier 配置(可选)
- ./easytier_config:/root/.easytier:rw
# 日志(可选)
- ./logs:/var/log:rw说明:
- SSH 密钥持久化:容器重启后仍可访问
- EasyTier 配置持久化:保存网络配置
- 日志持久化:便于审计和故障排查
image: ghcr.io/wuhins/easytier-ssh-jumpserver:latest优点:
- 经过 GitHub Actions 自动构建和测试
- 版本可追溯
- 定期更新安全补丁
image: docker.gh-proxy.org/ghcr.io/wuhins/easytier-ssh-jumpserver:latest说明:
- 使用 GitHub 代理加速下载
- 镜像内容与官方一致
services:
easytier-ssh:
image: ghcr.io/wuhins/easytier-ssh-jumpserver:latest
hostname: easytier-ssh
container_name: easytier-ssh
restart: unless-stopped
# 独立网络(安全)
networks:
- etssh-network
# 最小权限
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TZ=Asia/Shanghai
- SSH_USER=root
# 不使用密码,只用密钥认证
# - SSH_PASSWORD=
# 连接到 Web Console
- ET_CONFIG_SERVER=ws://api.easytier.hinswu.top:0/HINS
- ET_MACHINE_ID=HINS-UZ801-SSH01
# TUN 设备(必需)
devices:
- /dev/net/tun:/dev/net/tun
# 持久化配置
volumes:
- ./ssh_keys:/root/.ssh:rw
- ./easytier_config:/root/.easytier:rw
- ./logs:/var/log:rw
networks:
etssh-network:
driver: bridge
ipam:
config:
- subnet: 172.28.0.0/16# 创建目录
mkdir -p easytier-ssh-jumpserver/ssh_keys
# 生成密钥对
ssh-keygen -t ed25519 -f easytier-ssh-jumpserver/ssh_keys/id_ed25519 \
-C "easytier-ssh-jumpserver"
# 设置权限
chmod 600 easytier-ssh-jumpserver/ssh_keys/id_ed25519
chmod 644 easytier-ssh-jumpserver/ssh_keys/id_ed25519.pub
# 复制公钥为 authorized_keys
cp easytier-ssh-jumpserver/ssh_keys/id_ed25519.pub \
easytier-ssh-jumpserver/ssh_keys/authorized_keyscd easytier-ssh-jumpserver
# 使用上面的安全配置示例创建 docker-compose.ymldocker compose up -d# 查看容器日志
docker compose logs -f
# 通过 EasyTier 虚拟 IP 连接
ssh -i ssh_keys/id_ed25519 root@<virtual-ip>- 不使用
host网络模式 - 不使用
privileged: true - 只添加必要的
cap_add - 使用 SSH 密钥认证(而非密码)
- 如果必须用密码,使用强密码
- 持久化 SSH 密钥配置
- 使用官方预构建镜像
- 定期更新镜像版本
- 限制
ports暴露(如果不需要,不要暴露) - 启用日志持久化便于审计
network_mode: host # ❌ 错误修复:
networks:
- etssh-network # ✅ 正确privileged: true # ❌ 错误修复:
cap_add:
- NET_ADMIN # ✅ 正确(只保留必需权限)
- NET_RAWSSH_PASSWORD=123456 # ❌ 错误修复:
# 方案 1:使用强密码
SSH_PASSWORD=Kj8#mP2$vL9@nQ4!xR7 # ✅ 正确
# 方案 2:只用密钥认证(推荐)
# 不设置 SSH_PASSWORD # ✅ 最安全最后更新: 2026-03-21
版本: v2.4.5