github地址
https://github.com/billchurch/webssh2
docker部署
1.拉取镜像
docker pull billchurch/webssh2
2.启动容器
docker run --name webssh2 -d -p 2222:2222 --restart=always billchurch/webssh2
3.进入容器修改配置文件
docker exec -it <容器id> sh
cp -rp config.json.sample config.json
vi config.json
{
"listen": {
"ip": "0.0.0.0",
"port": 2222 #容器内部服务的端口
},
"http": {
"origins": ["*:*"]
},
"user": {
"name": "用户名", #你所想要访问的服务器的用户名,如root。
"password": "密码", #对应账号的密码,也可以不设置,那么在访问的时候就需要输入账号和密码。
"privatekey": null,
"overridebasic": false
},
"ssh": {
"host": "ip", #你所想要访问的服务器ip,前提是此容器所在的服务器本身就可以访问通所设置的服务器ip。
"port": 22,
"localAddress": null,
"localPort": null,
"term": "xterm-color",
"readyTimeout": 20000,
"keepaliveInterval": 120000,
"keepaliveCountMax": 10,
"allowedSubnets": []
},
4.(可选)假如你需要通过nginx将这个服务代理出去,并且根路径还不能用,只能配置二级路径,那么跟着改
ps:假如你的nginx二级路径是wssh,那么需要修改以下两个文件的三处
vi client/public/client.htm
<link rel="stylesheet" href="/wssh/ssh/webssh2.css" />
<link rel="icon" href="/wssh/ssh/favicon.ico" />
<script src="/wssh/ssh/webssh2.bundle.js" defer></script>
vi client/src/client.htm
<link rel="stylesheet" href="/wssh/ssh/webssh2.css" />
<link rel="icon" href="/wssh/ssh/favicon.ico" />
<script src="/wssh/ssh/webssh2.bundle.js" defer></script>
5.(可选)配置nginx
ps:假如你的nginx二级路径是wssh
location /wssh/ {
rewrite ^/wssh(/.*)$ $1 break;
proxy_pass http://localhost:2222/wssh/ssh/host/ip; #你所想要访问的服务器ip
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;
}
location /ssh/socket.io/ {
proxy_pass http://localhost:2222/ssh/socket.io/;
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;
# 确保 WebSocket 连接正确处理
proxy_buffering off;
proxy_read_timeout 86400;
}
最后访问地址为:域名或者ip/wssh/ssh/host/ip
例如:http://192.168.33.33:2222/wssh/ssh/host/192.168.33.32
或者:https://www.hero.com/wssh/ssh/host/192.168.33.32