WebSSH神器 | SSHwifty部署使用教程
本文发布于412天前,最后更新于231天前,其中的信息可能有所发展或是发生改变。如有疑问请联系邮箱:admin@yemengstar.com。

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.jsonsshwifty.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 SupportForce 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专用客户端进行连接比较好。

本文为夜梦星尘原创文章。
文章作者:夜梦星尘
文章链接:WebSSH神器 | SSHwifty部署使用教程
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自夜梦星尘
支持作者:夜梦星尘的爱发电
上一篇
下一篇