资料参考地址https://juejin.cn/post/7173654250194403364
https://blog.csdn.net/Ber_Bai/article/details/127803210
github项目地址:https://github.com/huashengdun/webssh
实战搭建
分为真机和docker环境搭建,真机的话是需要python 3.10及以上环境的,测试环境3.10.12,而搭建的源码默认关了http,所以搭建好会直接报错error:webssh Public plain http request is forbidden.
error:webssh Public plain http request is forbidden.
这个时候需要用命令行执行命令才行,docker则提前改文件然后编译
真机搭建
方式一:在线安装
通过pip安装webssh
pip install webssh
方式二:离线安装(推荐)
通过git或下载离线包方式,将源码下载至本地
# 下载源码
git clone https://github.com/huashengdun/webssh.git
# 进入目录
cd webssh
# 安装wenssh
python setup.py install
如果环境中没有libffi等包,先通过以下指令安装
deban/ubantu等系统命令:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
centos命令
sudo yum groupinstall "Development Tools"
sudo yum install gcc libffi-devel zlib-devel bzip2-devel readline-devel sqlite-devel curl-devel
启动webssh
wssh
出现[I 221111 11:26:57 main:39] Listening on :8888 (http)提示表示已经启动成功了
访问wenssh

使用
后台启动
nohup wssh --fbidhttp=False &
8888端口占用
通过lsof指令查看端口占用情况
lsof -i:8888
再通过kill指令杀死进程
kill -9 pid # pid为对应的端口号
访问403
error:webssh Public plain http request is forbidden.
wssh拦截了http请求,通过--fbidhttp=False参数开放http请求
wssh --fbidhttp=False
在iframe中使用
若出现"XSRF cookie does not match POST argument"提示,通过添加参数wssh --xsrf=False禁用XSRF。
wssh --xsrf=False
通过get请求实现自动登录
访问http://ip:8888/?hostname=服务器地址&username=账号&password=base64加密后的密码&port=端口

改变背景色和字体颜色
通过请求访问时,可以增加#fontcolor=black&bgcolor=white参数。访问http://ip:8888/#fontcolor=black&bgcolor=white
docker搭建
下载源码
# 下载源码
git clone https://github.com/huashengdun/webssh.git
# 进入目录
cd webssh
修改源码
1、修改/webssh/settings.py,第35行define('fbidhttp', type=bool, default=True中的True改成False```即:define('fbidhttp', type=bool, default=False
2、同理修改第38行define('xsrf', type=bool, default=True的True改成False
第一个必须改,不然编译后http打开就是403的,最开始我以为是没搭建好,折腾很久,这是个坑
编译源码
# 进入目录
cd webssh
# 在项目目录下执行以下命令,使用 Docker Compose 构建并启动容器
docker-compose up --build

docker搭建修改快速编译
1、找个你知道的文件夹,点终端,执行命令,会自动多出来一个webssh
2、拉取完后刷新,进多出来的webssh,加一下docker-compose.yml的映射代码
volumes :
- /www/dk_project/webssh/:/code:rw
弄到端口上方换行,格式对齐加上去就行

映射代码的作用必须加,不然运行不了,且后面的code容器目录不动,前面的就是真实目录
3、点进刚刚多出来的webssh文件,点终端,执行构建命令,docker-compose up --build
(注意,宝塔需要修改加速url否则镜像拉取容易报错)
国内搭建文件
目录里的下列文件修改成这个,不然构建的时候里面的pypi和Alpine 系统源这种组件依赖会卡死,都是国外的,有时候国内访问慢
Dockerfile
FROM python:3-alpine
LABEL maintainer='<author>'
LABEL version='0.0.0-dev.0-build.0'
#心修复:切换 Alpine 系统源为阿里云(解决安装gcc卡死!)
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
ADD . /code
WORKDIR /code
# 统源+pip源全国内
RUN \
apk add --no-cache libc-dev libffi-dev gcc musl-dev openssl-dev && \
pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && \
pip install -r requirements.txt --no-cache-dir -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com && \
apk del gcc libc-dev libffi-dev musl-dev openssl-dev && \
addgroup webssh && \
adduser -Ss /bin/false -g webssh webssh && \
chown -R webssh:webssh /code
EXPOSE 8888/tcp
USER webssh
CMD ["python", "run.py"]
docker-compose.yml
version: '3'
services:
web:
build: .
volumes :
- /www/dk_project/dk_app/webssh/webssh/:/code:rw
ports:
- "8888:8888" 
