轻量级的开源堡垒机—Next Terminal部署教程

Next Terminal是使用Golang和React开发的一款HTML5的远程桌面网关,具有小巧、易安装、易使用、资源占用小的特点,支持RDP、SSH、VNC和Telnet协议的连接和管理。

本次使用centos7.6 官方原生安装,其他系统请自行替换脚本

安装 Apache Guacamole-Server

执行安装命令

yum install -y epel-release
yum install -y libguac-client-kubernetes \
    libguac-client-rdp \
    libguac-client-ssh \
    libguac-client-telnet \
    libguac-client-vnc \
    guacd

配置 guacd 

mkdir /etc/guacamole/ && cat <<EOF >> /etc/guacamole/guacd.conf
[daemon]
pid_file = /var/run/guacd.pid
log_level = info

[server]
# 监听地址
bind_host = 127.0.0.1
bind_port = 4822
EOF

为了避免权限问题导致错误修改使用 root 用户启动guacd服务,修改/usr/lib/systemd/system/guacd.service 文件,注释掉 User 和 Group 这两行。

启动 guacd 服务

# 重载服务
systemctl daemon-reload
# 开机自启
systemctl enable guacd
# 启动服务
systemctl start guacd
# 查看状态
systemctl status guacd

安装字体(SSH使用)

安装字体管理软件

yum install -y fontconfig mkfontscale

下载字体文件并移动到 /usr/share/fonts/目录下

cd  /usr/share/fonts/
# 下载英文字体
wget https://gitee.com/dushixiang/next-terminal/raw/master/guacd/fonts/Menlo-Regular.ttf
# 下载中文字体
wget https://gitee.com/dushixiang/next-terminal/raw/master/guacd/fonts/SourceHanSansCN-Regular.otf

更新字体

mkfontscale
mkfontdir
fc-cache

安装 Next Terminal

示例步骤安装在 /usr/local/next-terminal,你可以自由选择安装目录。

下载

国内用户如果访问不到GitHub,可从 Gitee 进行下载,地址为: https://gitee.com/dushixiang/next-terminal
wget https://github.com/dushixiang/next-terminal/releases/download/v1.3.9/

解压

tar -zxvf next-terminal.tar.gz -C /usr/local/

/usr/local/next-terminal/etc/next-terminal下创建或修改配置文件config.yml

db: sqlite
# 当db为sqlite时mysql的配置无效
#mysql:
#  hostname: 172.16.101.32
#  port: 3306
#  username: root
#  password: mysql
#  database: next-terminal

# 当db为mysql时sqlite的配置无效
sqlite:
  file: 'next-terminal.db'
server:
  addr: 0.0.0.0:8088
# 当设置下面两个参数时会自动开启https模式(前提是证书文件存在)
#  cert: /root/next-terminal/cert.pem
#  key: /root/next-terminal/key.pem

# 授权凭证和资产的密码,密钥等敏感信息加密的key,默认`next-terminal`
#encryption-key: next-terminal
guacd:
  hostname: 127.0.0.1
  port: 4822
  # 此路径需要为绝对路径,并且next-terminal和guacd都能访问到
  recording: '/usr/local/next-terminal/data/recording'
  # 此路径需要为绝对路径,并且next-terminal和guacd都能访问到
  drive: '/usr/local/next-terminal/data/drive'

sshd:
  # 是否开启sshd服务
  enable: false
  # sshd 监听地址,未开启sshd服务时此配置不会使用
  addr: 0.0.0.0:8089
  # sshd 使用的私钥地址,未开启sshd服务时此配置不会使用
  key: ~/.ssh/id_rsa

启动

./next-terminal

测试访问http://ip:8088 是否可以打开,部分公有云自带防火墙功能,请放行相关端口。

直接./next-terminal 退出终端或者关闭ssh会自动断开,所以还需要执行以下代码

使用系统服务方式启动

执行以下命令创建 next-terminal 系统服务文件

cat <<EOF >> /etc/systemd/system/next-terminal.service
[Unit]
Description=next-terminal service
After=network.target

[Service]
User=root
WorkingDirectory=/usr/local/next-terminal
ExecStart=/usr/local/next-terminal/next-terminal
Restart=on-failure
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
EOF

启动 Next-Terminal 服务

# 重载服务
systemctl daemon-reload
# 开机启动
systemctl enable next-terminal
# 启动服务
systemctl start next-terminal
# 查看状态
systemctl status next-terminal

访问http://ip:8088

反代域名

推荐使用 nginx 等web服务器反向代理 next-terminal 使用,一是可有效避免伪造 IP 绕过系统限制,二是开启 https 后可无缝同步系统粘贴板。

最简单的方法是安装一个宝塔进行反代你的端口,宝塔安装略

宝塔面板地址:https://www.bt.cn/

只反代的话可以只安装nginx

创建站点

创建好站点后申请证书,添加反向代理

编辑配置文件

宝塔的反代不太适合,我们改成官方的nginx 反向代理示例

先将宝塔的反代删除

然后复制添加以下代码

location / {
    proxy_pass http://127.0.0.1:8088/;
    proxy_set_header Host      $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
}

如图所示

测试使用域名打开

默认账号密码admin/admin

教程结束

 

版权声明:
作者:June1
链接:https://june1.wiki/53.html
来源:June1
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
轻量级的开源堡垒机—Next Terminal部署教程
Next Terminal是使用Golang和React开发的一款HTML5的远程桌面网关,具有小巧、易安装、易使用、资源占用小的特点,支持RDP、SSH、VNC和Telnet协议的连接和管理……
<<上一篇
下一篇>>