WebSSH 浏览器 SSH 客户端
WebSSH 是一个基于 Python 的 Web SSH 客户端,让你可以直接在浏览器中通过 SSH 协议连接到远程服务器。与 GoTTY 和 TTYD 不同,WebSSH 提供了一个完整的 SSH 连接界面,支持密码和密钥认证,可以连接任意 SSH 服务器。将 WebSSH 部署在搬瓦工 VPS 上,可以在任何有浏览器的设备上管理你的服务器集群。
一、安装 WebSSH
1.1 安装依赖
apt update && apt upgrade -y
apt install python3 python3-pip python3-venv -y
1.2 创建环境并安装
mkdir -p /opt/webssh && cd /opt/webssh
python3 -m venv venv
source venv/bin/activate
pip install webssh
验证安装:
wssh --version
二、基本使用
2.1 启动 WebSSH
wssh --address=0.0.0.0 --port=8888
在浏览器中访问 http://YOUR_VPS_IP:8888,会看到一个 SSH 登录界面,填写目标服务器的 IP、端口、用户名和密码即可连接。
2.2 使用 URL 参数预填信息
# 浏览器中访问以下 URL 可以预填连接信息
http://YOUR_VPS_IP:8888/?hostname=target-server.com&username=root&port=22
三、安全配置
3.1 绑定本地地址
建议将 WebSSH 绑定到本地地址,通过 Nginx 反向代理对外提供服务:
wssh --address=127.0.0.1 --port=8888
3.2 限制允许连接的主机
# 只允许连接指定的 SSH 服务器
wssh --address=127.0.0.1 --port=8888 \
--known-hosts=/etc/webssh/known_hosts
3.3 配置 HTTPS
wssh --address=0.0.0.0 --port=8888 \
--certfile=/etc/letsencrypt/live/your-domain.com/fullchain.pem \
--keyfile=/etc/letsencrypt/live/your-domain.com/privkey.pem
四、Nginx 反向代理
cat > /etc/nginx/sites-available/webssh <<'EOF'
server {
listen 443 ssl http2;
server_name ssh.your-domain.com;
ssl_certificate /etc/letsencrypt/live/ssh.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ssh.your-domain.com/privkey.pem;
# 基本认证保护
auth_basic "WebSSH Access";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
}
}
EOF
# 创建认证文件
apt install apache2-utils -y
htpasswd -bc /etc/nginx/.htpasswd admin YourStrongPassword
ln -sf /etc/nginx/sites-available/webssh /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
五、使用 systemd 管理
cat > /etc/systemd/system/webssh.service <<'EOF'
[Unit]
Description=WebSSH Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/webssh
ExecStart=/opt/webssh/venv/bin/wssh --address=127.0.0.1 --port=8888 --log-file-prefix=/var/log/webssh.log
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable webssh
systemctl start webssh
管理命令:
systemctl status webssh
systemctl restart webssh
journalctl -u webssh -f
六、Docker 部署
6.1 简单部署
docker run -d --name webssh \
-p 8888:8888 \
--restart always \
snsyzb/webssh
6.2 Docker Compose 部署
mkdir -p /opt/webssh-docker && cd /opt/webssh-docker
cat > docker-compose.yml <<'EOF'
version: '3.8'
services:
webssh:
image: snsyzb/webssh
container_name: webssh
restart: always
ports:
- "127.0.0.1:8888:8888"
environment:
- TZ=Asia/Shanghai
EOF
docker compose up -d
七、高级功能
7.1 SSH 密钥认证
WebSSH 的登录界面支持上传 SSH 私钥文件进行密钥认证。在连接表单中选择私钥文件并填写对应的密码短语(如果有)即可。
7.2 自定义终端大小
WebSSH 会自动根据浏览器窗口大小调整终端尺寸。通过拖动浏览器窗口即可改变终端大小。
7.3 文件传输
虽然 WebSSH 本身不提供图形化的文件传输功能,但你可以在终端中使用 scp 或 sftp 命令进行文件传输。
八、与其他 Web 终端工具对比
- WebSSH vs GoTTY:WebSSH 是完整的 SSH 客户端,可以连接任意服务器;GoTTY 只能共享本机终端。
- WebSSH vs TTYD:同上,WebSSH 支持远程 SSH 连接;TTYD 仅用于本机终端共享。
- WebSSH vs Teleport:Teleport 是企业级访问管理平台,功能更完善但部署更复杂。
九、常见问题
连接超时
检查目标服务器的 SSH 服务是否正常运行,以及防火墙是否允许 SSH 连接:
# 在 WebSSH 所在服务器上测试
ssh -v root@target-server.com -p 22
终端中文显示乱码
确保目标服务器设置了正确的 locale:
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
总结
WebSSH 是一款实用的浏览器 SSH 客户端,部署在搬瓦工 VPS 上可以随时随地通过浏览器管理你的服务器。建议配合 Nginx 反向代理和基本认证使用,增强安全性。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 折扣。相关工具:GoTTY 教程、TTYD 教程、Teleport 教程。