WebSSH
GitHub: huashengdun/webssh 是一个基于 tornado, paramiko 和 Xterm.js 的简单Web SSH终端,可以方便连接到 ssh服务 服务器进行维护。
我使用WebSSH的目的是在 Termux - Andorid终端 中运行一个能够支持中文输入的终端模拟器。虽然 Termux - Andorid终端 本身就是一个终端,但是在Android上,终端模拟器输入中文是一个非常痛苦(低效)的操作,我就考虑在浏览器中使用终端,以便能够借助 chrome
较好的平台支持输入法来实现日常的 移动工作 。
准备工作
备注
我的这个实践是在 Termux - Andorid终端 (Android上的一个终端)中完成,所以环境和常规的 Linux 不同,出现的问题和解决方法和特定平台相关。
安装 Rust , C 编译环境(我尝试
pip install webssh
提示报错需要Rust compiler): (采用 Termux开发环境 方法):
在 Termux - Andorid终端 中安装必要编译工具环境
apt install clang rust binutils
安装
通过 Python virtualenv 准备 Python 运行环境:
venv初始化
cd ~
python3 -m venv venv3
激活venv
# bash 使用 activate
source venv3/bin/activate
# csh 使用 activate.csh
# source venv3/bin/activate.csh
pip
安装webssh
:
pip
安装 webssh
pip install webssh
运行
直接运行:
没有任何参数运行
wssh
wssh
此时输出信息提示默认绑定 127.0.0.1:8888
,所以通过本机可以直接浏览器访问
常用运行:
常用参数运行
wssh
# start a http server with specified listen address and listen port
wssh --address='2.2.2.2' --port=8000
# start a https server, certfile and keyfile must be passed
wssh --certfile='/path/to/cert.crt' --keyfile='/path/to/cert.key'
# missing host key policy
wssh --policy=reject
# logging level
wssh --logging=debug
# log to file
wssh --log-file-prefix=main.log
# more options
wssh --help
部署
WebSSH可以部署在 Nginx 后端,通过 Nginx反向代理 访问
尚未实践
运行:
配置nginx案例:
配置nginx
# Nginx config example
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_read_timeout 300;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
}
作为独立服务器运行:
作为独立服务器运行
wssh --port=8080 --sslport=4433 --certfile='cert.crt' --keyfile='cert.key' --xheaders=False --policy=reject