更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Linux上安装、配置和使用Warpgate的方法

在Linux上安装、配置和使用Warpgate的方法

更新时间:2023-02-28 10:23:56浏览次数:780+次

本文介绍在Linux系统上安装和配置Warpgate的方法,安装后用户可以自由的使用Warpgate设置SSH和MySQL Bastion服务器。Warpgate是一种易于配置的服务,支持智能SSH、HTTPS和MySQL,此服务不需要任何特殊的客户端应用程序即可工作,一旦部署在Linux主机上,它将接受SSH、HTTPS和MySQL连接,并提供web管理UI。

\

安装和配置Warpgate的方法

1、在Linux上安装Warpgate

Warpgate可以轻松地安装在所需的Linux主机上,只需使用一个二进制文件即可轻松安装,无需依赖。最新的二进制文件可以从GitHub版本下载,下载地址在https://github.com/warp-tech/warpgate/releases。

您也可以从终端下载二进制文件。首先,导出所需版本:

ver=v0.7.0

在编写本文文时,最新版本为0.7.0。使用以下命令继续并下载导出的版本:

##For x86_64-linux

wget https://github.com/warp-tech/warpgate/releases/download/$ver/warpgate-$ver-x86_64-linux

##For arm64-linux

wget https://github.com/warp-tech/warpgate/releases/download/$ver/warpgate-$ver-arm64-linux

下载后,使二进制文件可执行:

chmod +x warpgate-*

现在将二进制文件移动到PATH:

sudo mv warpgate-* /usr/bin/warpgate

2、在Linux上配置Warpgate

一旦安装,Warpgate可以根据需要使用进行配置。如果要使用非默认配置文件(而不是/etc/warpgate.yaml),则需要使用--config <path>参数传递它。您还可以使用-database-url mysql://…或--database-url postgres://...使用内置SQLite以外的外部数据库。

在本文中,我们将通过运行以下命令来使用交互式设置模式:

sudo warpgate setup

如下所示:

08:49:56  INFO Welcome to Warpgate 0.7.0

08:49:56  INFO Let's do some basic setup first.

08:49:56  INFO The new config will be written in /etc/warpgate.yaml.

08:49:56  INFO * Paths can be either absolute or relative to /etc.

? Directory to store app data (up to a few MB) in (/var/lib/warpgate) › Press Enter

? Endpoint to listen for HTTP connections on (0.0.0.0:8888) ›

08:53:35  INFO You will now choose specific protocol listeners to be enabled.

08:53:35  INFO 

08:53:35  INFO NB: Nothing will be exposed by default -

08:53:35  INFO     you'll set target hosts in the config file later.

? Accept SSH connections? (y/n) › yes

? Endpoint to listen for SSH connections on (0.0.0.0:2222) ›

? Accept MySQL connections? (y/n) › yes

? Endpoint to listen for MySQL connections on (0.0.0.0:33306) ›

? Do you want to record user sessions? (y/n) › yes

? Set a password for the Warpgate admin user ›  ********

08:54:20  INFO Generated configuration:

sso_providers: []

recordings:

08:54:20  INFO Saved into /etc/warpgate.yaml

08:54:20  INFO Using config: "/etc/warpgate.yaml"

此时,您将在/etc/warpgate.yaml中生成一个配置。如果要删除或重新开始,请重新运行命令warpgate setup。

允许设置的端口通过防火墙:

#For UFW

sudo ufw allow 8888

sudo ufw allow 2222

sudo ufw allow 33306

##For Firewalld

sudo firewall-cmd --add-port=8888/tcp --permanent

sudo firewall-cmd --add-port=2222/tcp --permanent

sudo firewall-cmd --add-port=33306/tcp --permanent

sudo firewall-cmd --reload

配置完成后,可以使用以下命令启动Warpgate:

$ sudo warpgate run

08:58:02  INFO Warpgate version=0.7.0

08:58:02  INFO Using config: "/etc/warpgate.yaml"

08:58:02  INFO -------------------

08:58:02  INFO Warpgate is now running.

08:58:02  INFO Accepting SSH connections on 0.0.0.0:2222

08:58:02  INFO Accepting HTTP connections on https://0.0.0.0:8888

08:58:02  INFO Accepting MySQL connections on 0.0.0.0:33306

08:58:02  INFO -------------------

08:58:02  INFO Listening address=0.0.0.0:2222

08:58:02  INFO Listening address=0.0.0.0:8888

08:58:02  INFO Listening address=0.0.0.0:33306

如果您在另一个目录中有配置,请使用:

sudo warpgate run --config <path>

您现在可以使用URL访问web管理UI,地址格式为https://IP_Address:8888/@warpgate/admin,如下图所示:

\

使用创建的用户登录,您将看到下面的仪表板:

\

3、为Warpgate创建系统服务

为了避免手动启动Warpgate服务,我们将创建一个Systemd服务。首先使用以下命令创建服务文件:

sudo tee /etc/systemd/system/warpgate.service<<EOF

[Unit]

Description=Warpgate

After=network.target

StartLimitIntervalSec=0

[Service]

Type=notify

Restart=always

RestartSec=5

ExecStart=/usr/bin/warpgate --config /etc/warpgate.yaml run

[Install]

WantedBy=multi-user.target

EOF

创建文件后,重新加载系统守护程序:

sudo systemctl daemon-reload

确保服务已停止,端口2222和8888上没有运行任何内容:

sudo killall -9 warpgate

在基于Rhel的系统上,修改SELinux:

sudo /sbin/restorecon -v /usr/bin/warpgate

现在启动并启用服务:

sudo systemctl enable--现在是warpgate

检查服务状态:

$ systemctl status warpgate

warpgate.service - Warpgate

 Loaded: loaded (/etc/systemd/system/warpgate.service; enabled; vendor preset: enabled)

 Active: active (running)

Warpgate使用方法示例:在Warpgate上添加SSH目标和在Warpgate上添加MySQL目标

1、在Warpgate上添加SSH目标

现在,为了能够使用Warpgate将SSH连接到其他系统,我们需要添加目标。Warpgate有自己的一组SSH密钥,目标主机必须信任这些密钥才能建立连接。可以在管理UI的SSH选项卡中查看密钥:

\

也可以使用以下命令从命令行查看关键点:

sudo warpgate client-keys

这些键按优先顺序列出。复制其中一个密钥并粘贴到客户端计算机上的~/.ssh/authorized_keys中。如果机器没有文件,请手动创建并添加密钥:

##在目标主机上

vim ~/.ssh/authorized_keys

在文件中,将复制的关键点粘贴到末尾并保存。

除了使用SSH密钥之外,您还有一种不建议使用的替代密码验证方法。

现在,在管理UI上,通过导航到Config > Targets > Add target来添加目标主机:

\

在下一页上,提供远程系统的用户名和IP地址:

\

更改完成后,单击更新配置。添加后,系统应显示在主页上,如图所示:

\

现在,要从Warpgate主机连接到远程系统,请使用具有以下语法的命令:

ssh admin:<target-name>@<Host> -p 2222

此处的值为:

Host:Warpgate主机。

Port:Warpgate SSH端口(默认值:2222)。

Username:admin:<target-name>,在本例中:admin:ubuntu11。

Password:您的Warpgate管理员密码。

要查看确切的连接命令,请单击添加的主机。例如:

ssh admin:ubuntu11@192.168.205.11 -p 2222

提供要进行连接的Warpgate管理员密码:

\

2、在Warpgate上添加MySQL目标

在继续此设置之前,请确保已安装的数据库支持TLS。在MySQL服务器上,您需要进行以下配置:

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

##或

sudo vim /etc/my.cnf.d/mariadb-server.cnf

在文件中,修改以下行:

[mysqld]

# localhost which is more compatible and is not less secure.

bind-address            = *

tls_version = TLSv1.2,TLSv1.3

保存文件并重新启动服务:

sudo systemctl restart mariadb

通过防火墙运行服务:

#For UFW

sudo fw allow 3306

##For Firewalld

sudo firewall-cmd --add-port=3306/tcp --permanent

sudo firewall-cmd --reload

现在,您可以创建用于远程连接的用户:

sudo mysql -u root -p

使用以下命令包装用户:

CREATE USER 'sample_user'@'%' IDENTIFIED BY 'Passw0rd';

GRANT ALL PRIVILEGES ON *.* TO 'sample_user'@'%' IDENTIFIED BY 'Passw0rd';

FLUSH PRIVILEGES;

EXIT;

在要从中运行SQL查询的所需主机上,确保已安装MySQL客户端:

TLS:已启用。

明文密码身份验证:allowed。

还可以安装以下用于明文密码验证的附加软件包:

##On Debian/Ubuntu

sudo yum install mariadb-libs

##On Rhel/Rocky Linux/CentOS/Alma Linux

sudo apt install libmariadb3

我们在Warpgate服务器上为MySQL连接生成了证书,路径如下:

$ sudo vim /etc/warpgate.yaml 

mysql:

  enable: true

  listen: "0.0.0.0:33306"

  certificate: /var/lib/warpgate/tls.certificate.pem

  key: /var/lib/warpgate/tls.key.pem

为了实现从客户端的连接,我们需要将这些证书复制到MySQL客户端。您可以使用SCP命令执行此操作:

##来自Warpgate服务器

cd /var/lib/warpgate/

sudo scp tls.* username@IP_Address:~/

在命令中,替换MySQL客户端的用户名和IP地址。复制后,将证书移动到MySQL客户端上的首选目录:

##在MySQL客户端上

sudo mv tls-* /etc/mysql

现在使用证书更新MySQL客户端配置文件:

sudo vim /etc/mysql/my.cnf

在文件中,添加以下行:

[client-server]

ssl-cert=/etc/mysql/tls.certificate.pem

ssl-key=/etc/mysql/tls.key.pem

tls_version = TLSv1.2,TLSv1.3

现在回到Wapgate管理UI,我们将使用几乎类似于SSH的步骤。导航到Config > Targets > Add target,然后设置目标名称和类型。通过提供主机、用户和密码来调整配置。在添加后,更新配置,它将显示在主页上。

经过以上配置,现在就可以使用URL连接到数据库,语法如下:

mysql://<username>#<target>:<password>@<warpgate host>:<warpgate mysql port>?sslMode=required

注:

Host:Warpgate主机。

Port:Warpgate MySQL端口(默认值:33306)。

Username:admin#<target>或admin:<target-name>,在本例中:admin#mariaDB。

Password:您的Warpgate管理员密码。

现在,可以从管理UI获取所需的URL或连接命令。可从Warpgate服务器连接到数据库,如下所示:

mysql -u 'admin#mariaDB' --host '192.168.205.2' --port 33306 --ssl -p

连接后,您可以在会话下的管理UI中查看日志了。至此,在Warpgate上添加MySQL目标完成。

经过以上设置,您现在可以建立到SSH、HTTPS和MySQL服务的安全连接了。