1.前言
本文参考:在Linux服务器上安装Web SSH–SSHwifty的部署和使用
项目GitHub:nirui/sshwifty: Web SSH & Telnet (WebSSH & WebTelnet client)
我们通常会使用SSH客户端连接服务器,比如夜梦使用过的XShell和Termius。但是,我们能否免去客户端的安装,直接用上SSH服务呢?
可以肯定可以,较新的系统都支持使用SSH,但是如果你也想要界面帮助你的使用,那么Web SSH就很适合你!
2.准备
夜梦这里使用的是雨云的服务器,长期全场景九折 + 首月五折优惠链接:https://www.rainyun.com/
此项目必须使用域名并开启 SSL。通过 namesilo 注册域名可以使用 1 美元优惠码:yemeng。
3.部署
3.1下载
根据服务器的CPU架构,我们先到GitHub上面找到适合自己的版本。夜梦服务器的CPU架构是X86_64,所以这里选择的是sshwifty_0.3.1-beta-release_linux_amd64.tar.gz
cd ~ && mkdir webssh && cd webssh
# 下载到服务器
wget https://github.com/nirui/sshwifty/releases/download/0.3.1-beta-release-prebuild/sshwifty_0.3.1-beta-release_linux_amd64.tar.gz
# 解压文件
tar -xf sshwifty_0.3.1-beta-release_linux_amd64.tar.gz
3.2配置
接下来需要我们进行配置,所以先查看一下默认的配置:
cat sshwifty.conf.example.json
配置内容如下:
{
"HostName": "",
"SharedKey": "WEB_ACCESS_PASSWORD",
"DialTimeout": 5,
"Socks5": "",
"Socks5User": "",
"Socks5Password": "",
"Servers": [
{
"ListenInterface": "127.0.0.1",
"ListenPort": 8182,
"InitialTimeout": 3,
"ReadTimeout": 60,
"WriteTimeout": 60,
"HeartbeatTimeout": 20,
"ReadDelay": 10,
"WriteDelay": 10,
"TLSCertificateFile": "",
"TLSCertificateKeyFile": "",
"ServerMessage": "Programmers in China launched an online campaign against [implicitly forced overtime work](https://en.wikipedia.org/wiki/996_working_hour_system) in pursuit of balanced work-life relationship. Sshwifty wouldn't exist if its author must work such extreme hours. If you're benefiting from hobbyist projects like this one, please consider to support the action."
}
],
"Presets": [
{
"Title": "SDF.org Unix Shell",
"Type": "SSH",
"Host": "sdf.org:22",
"Meta": {
"Encoding": "utf-8",
"Authentication": "Password"
}
},
{
"Title": "My own super secure server",
"Type": "SSH",
"Host": "localhost",
"Meta": {
"User": "root",
"Encoding": "utf-8",
"Private Key": "-----BEGIN RSA Will be sent to client-END RSA PRI...\n",
"Authentication": "Private Key",
"Fingerprint": "SHA256:bgO...."
}
},
{
"Title": "My own super expensive router",
"Type": "Telnet",
"Host": "10.0.0.1",
"Meta": {
"Encoding": "ibm866"
}
}
],
"OnlyAllowPresetRemotes": false
}
这里需要我们修改两个地方
vim sshwifty.conf.example.json
第一处是访问密码:
第二处是监听IP和端口,需要把127.0.0.1
改为0.0.0.0
修改后如下:
重命名sshwifty.conf.example.json
为sshwifty.conf.json
mv sshwifty.conf.example.json sshwifty.conf.json
3.3运行
运行十分简单:
./sshwifty_linux_amd64
然后你就可以通过ip:8192
访问WebSSH了。
3.4持久化运行
这里夜梦使用screen持久化运行sshwifty。
# 没有screen的话先安装
# apt install screen -y
screen -S sshwifty
# cd ~/webssh
./sshwifty_linux_amd64
然后按ctrl+alt+d组合键退出screen。
4.反向代理
此项目必须使用域名,并开启SSL。夜梦推荐使用Nginx Proxy Manager进行反向代理:
【docker】反向代理神器 ——Nginx Proxy Manager 的安装
【docker】Nginx Proxy Manager 的使用
请一定开启Websockets Support
和Force SSL
选项,否则你将无法使用Telnet功能/无法进入页面。
5.使用
访问你的域名
进入页面,输入你的密码。
一切无误,我们将进入主页面。
Telnet功能:
SSH功能:
6.常见问题
Unable to authenticate: TypeError: Cannot read properties of undefined (reading ‘importKey’)
这个问题,主要是新的Chrome和Chromium内核浏览器,已经不支持非SSL的加密传输在SSH上。可行的解决方法:
- 为域名申请SSL证书
- 将sshwifty的URL协议从http改为https
- 开启Force SSL(强制HTTPS等)选项
7.提示
夜梦不推荐使用这种方法进行SSH传输,这可能存在安全风险。如果非必须,还是使用XShell和Termius等SSH专用客户端进行连接比较好。