如何使用 Wetty 在 Web 浏览器上运行 Linux 终端
系统管理员在日常任务中需要使用诸如 Linux 上的 GNOME 终端之类的应用程序或使用 SSH 客户端(例如 Putty) 连接到远程服务器em>适用于 Windows 系统。
还有另一种奇妙的方法,允许人们通过 HTTP 和 HTTPS 直接从 Web 访问终端。这个工具叫做Wetty,源自两个词web+tty。使用 Wetty,您可以执行在终端上执行的所有操作。它使用 hterm 终端模拟器作为后端,并使用 WebSockets 而不是 JavaScript。
Wetty 具有以下惊人的功能:
- 它是可嵌入的,可以集成到其他基于网络的应用程序中。
- 有恢复会话
- 可审计性,因为 SSH 服务器和客户端之间的通信必须通过 Web 应用程序
- 通过 Web 应用程序服务器建立通信隧道,从而限制匿名访问。
- 易于访问,因为它不需要在客户端系统上安装本地软件。
设置先决条件:
在本指南中,我将说明如何使用 Wetty(web+tty) 在 Web 浏览器上运行 Linux 终端。为了运行此安装程序,您需要在系统上安装以下软件。
- Python
- 制作
- Nodejs 版本 14 及以上。
- 构建必需的
- git
步骤 1 – 在 Linux 上安装 Wetty
在本指南中,我将演示如何在基于 RHEL 和基于 Debian 的系统上安装 Wetty:
首先,安装所需的依赖项,如下所示。
1.在Linux上安装Git
由于我们将从 GitHub 存储库克隆 Wetty,因此需要安装 git。
##On RHEL/CentOS/Rocky Linux 8/Alma Linux 8
sudo yum install git
##On Debian/Ubuntu
sudo apt update
sudo apt install git
2.在Linux上安装Node.JS 14
由于我们需要大于 14 的 NodeJs 版本,因此我们将在 Linux 系统上安装 Node.Js 14,如下所示。
首先安装所需的软件包,即 build-essential 和 Python,如下所示
##On RHEL/CentOS/Rocky Linux 8/Alma Linux 8
sudo yum groupinstall 'Development Tools'
sudo yum -y install ncurses-devel make gcc g++ bc openssl-devel
sudo yum -y install python3
##On Debian/Ubuntu
sudo apt install curl build-essential python3
sudo apt install libncurses-dev flex libssl-dev libelf-dev bc bison
然后在本地安装 Node.js 14,如下所示。
##On Debian/Ubuntu
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt -y install nodejs
##On RHEL/CentOS/Rocky Linux
sudo dnf module install nodejs:14
验证已安装的节点版本。
$ node -v
v14.18.1
安装纱线。
##On Debian/Ubuntu
sudo apt install gnupg2
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install yarn
##On RHEL/CentOS/Rocky Linux/Alma Linux
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn
3.在Linux上安装WeTTY
现在我们将使用 Yarn 在我们的系统上安装 WeTTY
sudo yarn global add wetty
示例输出:
.....
warning wetty > socket.io > socket.io-parser > [email : Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
warning wetty > socket.io > engine.io > [email : Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email " with binaries:
- wetty
Done in 33.83s.
安装完成后。导出 PATH 如下。
echo "export PATH=\$PATH:/usr/local/bin" | sudo tee -a /etc/profile
source /etc/profile
如下验证 Wetty 安装。
$ wetty --help
Options:
--help, -h Print help message [boolean]
--version Show version number [boolean]
--conf config file to load config from [string]
--ssl-key path to SSL key [string]
--ssl-cert path to SSL certificate [string]
--ssh-host ssh server host [string]
--ssh-port ssh server port [number]
--ssh-user ssh user [string]
--title window title [string]
--ssh-auth defaults to "password", you can use "publickey,password"
instead [string]
--ssh-pass ssh password [string]
步骤 2 – 使用 Wetty(web+tty) 从 Web 浏览器访问 Linux 终端
如果您启用了firewalld,请允许端口3000通过防火墙,如下所示。
### Firewalld Firewall ###
sudo firewall-cmd --zone=public --permanent --add-port=3000/tcp
sudo firewall-cmd --reload
### UFW Firewall ###
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 http://IP_address:3000/wetty 访问 WeTTY Web UI
提供您的系统用户名和密码,如下所示。
由于连接不安全,并且您不希望登录凭据通过未受保护的线路传输,因此您可能需要通过 HTTPS 访问 Wetty。我们需要创建一个自签名证书,允许我们通过 HTTPS 访问 Wetty。
步骤 3 – 启用 WeTTY 自动登录。
自动登录功能使用户无需使用用户名或密码即可登录。但出于安全原因,不建议使用此功能。要启用此功能,请先安装 sshpass。
##On RHEL/CentOS/Rocky Linux 8/Alma Linux 8
sudo yum install sshpass
##On Debian/Ubuntu
sudo apt install sshpass
现在使用以下 URL 登录您的服务器:http://IP_Address:3000/wetty/ssh/用户名 ?pass=密码
在 URL 中,将用户名和密码替换为服务器登录凭据。您应该无需密码即可登录。
第 4 步 – 为 Wetty 创建自签名证书
为了能够创建自签名证书,您需要在系统上安装OpenSSL。
##On RHEL/CentOS/Rocky Linux 8/Alma Linux 8
sudo yum install openssl
##On Debian/Ubuntu
sudo apt install openssl
现在生成自签名证书来加密我们的 Wetty 网络流量,如下所示
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
第 5 步 – 创建 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)
Active: active (running) since Thu 2021-12-23 11:16:00 EST; 18s ago
Main PID: 86999 (node)
Tasks: 13 (limit: 36438)
Memory: 31.9M
CGroup: /system.slice/wetty.service
├─86999 node /usr/local/bin/wetty --host 0.0.0.0 -p 3000 --title wetty --ssl-key /etc/ssl/private/wetty.key --ssl-cert /etc/ssl/certs/wett>
└─87010 login -h localhost
Dec 23 11:16:00 localhost.localdomain systemd[1]: Started WeTTY.
Dec 23 11:16:01 localhost.localdomain wetty[86999]: {"base":"/wetty/","label":"Wetty","level":"info","message":"Starting server","port":3000,"ssl":{">
Dec 23 11:16:01 localhost.localdomain wetty[86999]: {"connection":"https","label":"Wetty","level":"info","message":"Server started","port":3000,"time>
Dec 23 11:16:05 localhost.localdomain wetty[86999]: {"label":"Wetty","level":"info","message":"Connection accepted.","timestamp":"2021-12-23T16:16:05>
Dec 23 11:16:05 localhost.localdomain wetty[86999]: {"address":"localhost","label":"Wetty","level":"info","message":"Process Started on behalf of us
如果需要重新启动 WeTTY 服务,请使用以下命令:
sudo systemctl restart wetty
第 6 步 – 通过 HTTPS 访问 Wetty Web 终端
现在,您可以使用生成的证书通过 HTTPS 访问 Wetty。访问 Web 界面的 URL 为 https://IP_Address:3000 或 https://hostname:3000。
如果您的系统上启用了防火墙,请使用以下命令允许 HTTPS 通过它。
##For ufw
sudo ufw allow https
##For Firewalld
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --reload
现在您应该能够通过 HTTPS 访问您的 Wetty Web 终端,如下所示。
从 Wetty Web 终端,您可以运行与在普通终端上发出的命令类似的所有命令。
第 7 步 – 使用 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 将发出一个弹出窗口,其中显示本地文件 blob 的链接,如下所示。
结论。
这就是结局!我们已经成功了解了如何使用 WeTTY 在 Web 浏览器上运行 Linux 终端。我希望本指南对您很重要。
在此页面上查看更多内容:
- 10 个最佳 Linux 终端模拟器
- 适用于 Linux 的顶级基于终端的监控工具
- 在 Ubuntu/Debian 上安装 Tilix GTK3 平铺终端模拟器