说明

Sshwifty是一个用于SSH的网页客户端,并集成了Telnet功能。相比于ttyd,Sshwifty提供了密匙认证,在能够访问自身服务器的基础上又可以连接其他服务器,十分的便利。

安装

下载安装

点击本小节标题选择适合自己架构的安装包,如sshwifty_0.2.35-beta-release_linux_amd64.tar.gz。注意:Sshwifty登录需要配置SSL证书,否则会报错无法登录,建议使用Caddy反向代理。

1
2
3
4
tar -xvf sshwifty_0.2.35-beta-release_linux_amd64.tar.gz
mv sshwifty.conf.example.json sshwifty.conf.json
chmod +x sshwifty_linux_amd64
./sshwifty_linux_amd64

Docker安装

1
2
3
4
5
6
7
8
9
10
docker run --detach \
--restart always \
--publish 8182:8182 \
--env SSHWIFTY_DOCKER_TLSCERT="$(cat domain.crt)" \
--env SSHWIFTY_DOCKER_TLSCERTKEY="$(cat domain.key)" \
--name sshwifty \
niruix/sshwifty:latest
#若使用反向代理需删去--env,也可自行配置证书或使用自签证书:
openssl req \
-newkey rsa:4096 -nodes -keyout domain.key -x509 -days 90 -out domain.crt

配置详解

sshwifty.conf.json需要与sshwifty_linux_amd64同目录,或放置在/etc//root/.config/之一即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
"HostName": "", #默认为空允许所有域名,可指定域名
"SharedKey": "WEB_ACCESS_PASSWORD", #网页登录密码,为空则允许所有人访问
"DialTimeout": 5, #超时时间(秒)
"Socks5": "", #使用Socks5代理
"Socks5User": "", #Socks5用户名
"Socks5Password": "", #Socks5密码
"Servers": [ #可设置多个,在不同端口提供服务
{
"ListenInterface": "0.0.0.0", #监听本地网络接口
"ListenPort": 8182, #监听端口
"InitialTimeout": 3, #HTTP握手超时(秒)
"ReadTimeout": 60, #无操作时后端服务器与客户端保持连接时间(秒)
"WriteTimeout": 60, #服务器等待客户端连接准备接收新数据时间(秒),超时连接关闭
"HeartbeatTimeout": 20, #内部回显请求间隔(秒)
"ReadDelay": 10, #每个请求之间强制延迟(毫秒)
"WriteDelay": 10, #每次写入之间强制延迟(毫秒)
"TLSCertificateFile": "", #SSL证书路径
"TLSCertificateKeyFile": "" #SSL证书密匙路径
}
],
"Presets": [ #预先设置内容,以免手动再填写
{
"Title": "SDF.org Unix Shell", #名称
"Type": "SSH", #连接类型SSH或Telnet
"Host": "xml.wiki: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", #私匙内容
#"Private Key": "file:///root/.ssh/private_key", #也可指定私匙文件
"Authentication": "Private Key", #认证方式,密匙认证
"Fingerprint": "SHA256:bgO...." #公匙指纹数据,默认
}
},
{
"Title": "My own super expensive router",
"Type": "Telnet",
"Host": "10.0.0.1",
"Meta": {
"Encoding": "ibm866"
}
}
],
"OnlyAllowPresetRemotes": false #只允许连接预先设置的远程主机
}