使用Wetty在Web浏览器上运行Linux终端的方法
本文介绍如何使用Wetty在Web浏览器上运行Linux系统终端的方法。使用Wetty的优势很多,比如它是可嵌入的,可以集成到其他基于web的应用程序中,同时,由于SSH服务器和客户端之间的通信必须通过web应用程序,因此具有可审计性,还有它易于访问,因为它不需要在客户端系统上安装本地软件。
使用Wetty在Web浏览器上运行Linux终端的具体操作方法
1、使用Wetty(Web+tty)从Web浏览器访问Linux终端
在使用之前,请在Linux上安装好Wetty,可参考在Linux系统上安装Wetty的方法一文,阅读地址在https://www.hmxthome.com/linux/5092.html。
另外,如果启用了防火墙,则允许端口3000通过防火墙,如下所示:
###Firewalld###
sudo firewall-cmd --zone=public --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
###UFW###
sudo ufw allow proto tcp from any to any port 3000
使用命令在端口3000上启动Wetty web界面:
$ wetty --host 0.0.0.0 -p 3000
使用以下命令验证Wetty的URL:
echo https://$(curl -s4 icanhazip.com):3000
此时,您可以通过URL访问WeTTY web UI,地址格式为http://IP_address:3000/wetty。然后提供您的系统用户名和密码,如下所示:
由于连接不安全,并且您不希望登录凭据通过未受保护的线路传输,因此您可能需要通过HTTPS访问Wetty。我们需要创建一个自签名证书,允许我们通过HTTPS访问Wetty。
2、启用WeTTY自动登录
自动登录功能允许用户在不使用用户名或密码的情况下登录。但出于安全原因,不建议使用此功能。要启用此功能,请首先安装sshpass。
##在RHEL/CentOS/Rocky Linux 8/Alma Linux 8上
sudo yum install sshpass
##在Debian/Ubuntu上
sudo apt install sshpass
现在使用URL登录到服务器,地址格式为http://IP_Address:3000/wetty/ssh/username?pass=password。在URL中,用服务器登录凭据替换用户名和密码。您应该在没有密码的情况下登录。
3、为Wetty创建自签名证书
为了能够创建自签名证书,需要在系统上安装OpenSSL。
##在RHEL/CentOS/Rocky Linux 8/Alma Linux 8上
sudo yum install openssl
##在Debian/Ubuntu上
sudo apt install openssl
现在生成自签名证书以加密Wetty web流量,如下所示:
openssl req -x509 -nodes -days 1095 -newkey ec:<(openssl ecparam -name secp384r1) -subj "/C=GB/ST=None/L=None/O=None/OU=None/CN=None" -out wetty.crt -keyout wetty.key
为创建的文件分配所需的权限:
sudo cp wetty.crt /etc/ssl/certs/wetty.crt
sudo mkdir -p /etc/ssl/private/
sudo cp wetty.key /etc/ssl/private/wetty.key
sudo chmod 755 /etc/ssl/certs/wetty.crt
sudo chmod 755 /etc/ssl/private/wetty.key
4、创建Wetty Systemd服务
为了能够管理WeTTY服务,即在需要时启动、启用和停止服务,我们需要创建wetty.service文件。
使用您喜爱的编辑器,创建如下文件:
sudo vim /etc/systemd/system/wetty.service
在文件中,添加以下内容:
[Unit]
Description=WeTTY
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/bash -c "wetty --host 0.0.0.0 -p 3000 --title wetty --ssl-key /etc/ssl/private/wetty.key --ssl-cert /etc/ssl/certs/wetty.crt"
Restart=always
RestartSec=2
TimeoutStopSec=5
SyslogIdentifier=wetty
[Install]
WantedBy=multi-user.target
现在重新加载守护程序,如下所示:
sudo systemctl daemon-reload
使用命令启动并启用WeTTY:
sudo systemctl enable wetty
sudo systemctl start wetty
检查服务状态:
$ systemctl status wetty
wetty.service - WeTTY
Loaded: loaded (/etc/systemd/system/wetty.service; enabled; vendor preset: disabled)
如果需要重新启动WeTTY服务,请使用以下命令:
sudo systemctl restart wetty
5、通过HTTPS访问Wetty Web终端
现在,您可以使用生成的证书通过HTTPS访问Wetty。访问web界面的URL格式为https://IP_Address:3000或者https://hostname:3000。
如果您的系统上启用了防火墙,请使用命令允许HTTPS通过它:
##UFW
sudo ufw allow https
##Firewalld
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --reload
现在,您应该能够通过HTTPS访问您的Wetty Web终端,如下所示:
从Wetty Web终端,您可以运行与在普通终端上执行的命令类似的所有命令。
6、使用WeTTY下载文件
WeTTY还支持文件下载。要配置它,需要将以下行添加到.bashrc,如下所示:
$ sudo vim .bashrc
function wetty-download() {
printf "\033[5i"$(cat /dev/stdin | base64 -w 0)"\033[4i"
}
源配置文件:
source .bashrc
现在您可以使用WeTTY下载文件了。例如,要下载example.txt文件,我将按以下命令进行:
cat example.txt | wetty-download
Wetty将发出一个弹出窗口,其中包含指向本地文件的链接,将显示如下图:
到这里,我们已经成功地完成了如何使用WeTTY在Web浏览器上运行Linux系统终端的操作。