Debian12远程方案xrdp、kasmvnc、novnc

一、Novnc与Xrdp

尝试了vnc/rdp/kasmvnc/novnc等方案远程方案,本地用rdp还行远程卡的要命,所以远程用novnc或kasmvnc,这个是真难配置,完成了tightvncserver配置、xrdp配置、novnc的配置,可以用Win10自带的远程连接,也可以网页的novnc连接,一键安装脚本如下:

bash 复制代码
#!/bin/bash
CURRENT_USER=$(logname)
CURRENT_GROUP=$(id -gn "$CURRENT_USER")
VNC_PW="password"

sudo mkdir -p "/home/${CURRENT_USER}"
sudo chown -R $CURRENT_USER:$CURRENT_GROUP "/home/${CURRENT_USER}"
sudo chmod 755 "/home/${CURRENT_USER}"

echo "[INFO] 更新软件源..."
sudo apt update

echo "[INFO] 安装中文环境..."
sudo apt install -y locales fonts-noto-cjk fonts-wqy-zenhei
sudo sed -i '/^# zh_CN.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=zh_CN.UTF-8

echo "[INFO] 安装xfce4桌面与dbus-x11..."
sudo apt install -y dbus-x11 xfce4 xfce4-goodies

echo "[INFO] 安装tightvncserver服务器..."
sudo apt install -y tightvncserver
if ! command -v tightvncserver >/dev/null 2>&1; then
    echo "[ERROR] tightvncserver 安装失败,脚本终止!"
    exit 1
fi

PASS_FILE="$HOME/.vnc/passwd"
echo "[INFO] 自动配置tightvncserver密码..."
if [ ! -f "$PASS_FILE" ]; then
    umask 0077                                  
    mkdir -p "$HOME/.vnc"                            
    chmod go-rwx "$HOME/.vnc"                        
    tightvncpasswd -f <<<"$VNC_PW" >"$PASS_FILE"
    echo "密码已保存至 $PASS_FILE"
fi

echo "[INFO] 自动配置xstartup (XFCE)内容..."
cat > "$HOME/.vnc/xstartup" <<EOF
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
EOF
chmod u+x "$HOME/.vnc/xstartup"

echo "[INFO] 下载 noVNC 并生成脚本与证书..."
cd "$HOME"
if [ ! -d "noVNC" ]; then
git clone https://github.com/novnc/noVNC.git || { echo "[ERROR] 下载 noVNC 失败,请重新下载!"; exit 1; }

cd noVNC
#生成自签名证书以便通过 HTTPS 连接
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem -subj "/C=CN/ST=Default/L=Default/O=Default/CN=localhost"

#生成novnc启动脚本
cat > "start.sh" <<'EOF'
#!/bin/bash
vncserver :1
~/noVNC/utils/novnc_proxy --vnc localhost:5901 --listen 8443 --cert ~/noVNC/self.pem
vncserver -kill :1 > /dev/null 2>&1
EOF
chmod u+x start.sh
fi

echo "[INFO] 创建noVNC 代理的Systemd服务..."
# 配置 Systemd 服务
sudo tee "/etc/systemd/system/novnc.service" > /dev/null <<EOF
[Unit]
Description=noVNC
After=network.target

[Service]
Type=simple
User=${CURRENT_USER}
Group=${CURRENT_GROUP}
ExecStart=/home/${CURRENT_USER}/noVNC/start.sh
Restart=always

[Install]
WantedBy=multi-user.target
EOF

echo "[INFO] 配置 XRDP..."
sudo apt install -y xrdp xorgxrdp
echo "/usr/bin/xfce4-session" > "$HOME/.xsession"
sudo adduser xrdp ssl-cert
sudo systemctl daemon-reload

echo "[INFO] 启动XRDP服务..."
sudo systemctl enable xrdp
sudo systemctl restart xrdp

echo "[INFO] 启动noVNC服务..."
sudo systemctl enable novnc
sudo systemctl restart novnc

echo "[SUCCESS] 安装完成!"
echo "稳定访问地址: https://$(hostname -I | awk '{print $1}'):8443/vnc.html"

二、Kasmvnc与Xrdp

尝试了kasmvnc与xrdp的方案,这个kasmvnc不知为什么找不到内网IP,只能kasmvncserver -publicIP 内网IP 才能运行在飞牛Nas上,同一用户不可以同时登陆,要注销了才能登另一个,除非新建另一个,确实难配置,一键安装脚本kasmvnc与xrdp:

bash 复制代码
#!/bin/bash
CURRENT_USER=$(logname)
CURRENT_GROUP=$(id -gn "$CURRENT_USER")
VNC_PW="password"

sudo mkdir -p "/home/${CURRENT_USER}"
sudo chown -R $CURRENT_USER:$CURRENT_GROUP "/home/${CURRENT_USER}"
sudo chmod 755 "/home/${CURRENT_USER}"

echo "[INFO] 更新软件源..."
sudo apt update

echo "[INFO] 安装中文环境..."
sudo apt install -y locales fonts-noto-cjk fonts-wqy-zenhei
sudo sed -i '/^# zh_CN.UTF-8 UTF-8/s/^# //' /etc/locale.gen
sudo locale-gen
sudo update-locale LANG=zh_CN.UTF-8

echo "[INFO] 安装xfce4桌面与dbus-x11..."
sudo apt install -y dbus-x11 xfce4 xfce4-goodies

echo "[INFO] 配置 XRDP..."
sudo apt install -y xrdp xorgxrdp
echo "/usr/bin/xfce4-session" > "$HOME/.xsession"

#下载 KasmVNC 安装包
KASMVNC_VERSION="1.4.0"
DEB_NAME="kasmvncserver_bookworm_${KASMVNC_VERSION}_amd64.deb"
DOWNLOAD_URL="https://github.com/kasmtech/KasmVNC/releases/download/v${KASMVNC_VERSION}/${DEB_NAME}"

echo "[INFO] 开始安装 KasmVNC ${KASMVNC_VERSION}"

# 进入临时目录
WORKDIR="/tmp/kasmvnc_install"
mkdir -p "$WORKDIR"
cd "$WORKDIR"

echo "[INFO] 下载 KasmVNC 安装包..."
if [[ -f "$DEB_NAME" && -s "$DEB_NAME" ]]; then
    echo "[INFO] 安装包已存在且有效:$DEB_NAME,跳过下载"
else
    echo "[INFO] 下载安装包..."
    rm -f "$DEB_NAME"
    if ! wget -c "$DOWNLOAD_URL" --show-progress; then
        echo "[ERROR] 下载失败:$DOWNLOAD_URL,请重新下载!"
        exit 1
    fi
fi

echo "[INFO] 安装 KasmVNC..."
if ! sudo apt install -y "./$DEB_NAME"; then
    echo "[ERROR] KasmVNC 安装失败"
    exit 1
fi

echo "[INFO] 安装完成,检查版本信息..."
dpkg -s kasmvncserver | grep Version

echo "[INFO] 添加当前用户到ssl-cert组..."
sudo adduser xrdp ssl-cert
sudo adduser $USER ssl-cert

echo "[INFO] 配置KasmVNC的Systemd服务..."
sudo tee "/etc/systemd/system/kasmvnc.service" > /dev/null <<EOF
[Unit]
Description=KasmVNC
After=network.target

[Service]
Type=forking
User=${CURRENT_USER}
ExecStart=/usr/bin/kasmvncserver -publicIP $(hostname -I | awk '{print $1}')
ExecStop=/usr/bin/kasmvncserver -kill :1

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable xrdp
sudo systemctl restart xrdp
sudo systemctl enable kasmvnc

echo "[INFO] KasmVNC启动xfce桌面..."
sg ssl-cert -c "kasmvncserver -select-de xfce -publicIP $(hostname -I | awk '{print $1}')"

三、安装chrome浏览器

bash 复制代码
#下载最新的 Google Chrome .deb 包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

#手动安装
sudo dpkg -i google-chrome-stable_current_amd64.deb

#修复依赖
sudo apt --fix-broken install

#沙箱模式
google-chrome-stable --no-sandbox

参考教程:

1、使用 noVNC 通过浏览器访问 Ubuntu 22 桌面的构建方法

2、webvnc novnc 方案

3、在Ubuntu上安装KasmVNC实现轻松远程桌面访问

4、KasmVNC完整使用指南:轻量级远程桌面解决方案终极教程

5、服务器安装xfce桌面环境并通过浏览器操控

6、KasmVNC用法,透过浏览器VNC远端连线到Linux桌面

相关推荐
Dovis(誓平步青云)17 小时前
《Linux 核心 IO 模型深析(中篇):探索Cmake与多路转接的高效实现poll》
linux·运维·服务器·数据库·csdn成长记录
Java 码农17 小时前
RabbitMQ集群部署方案及配置指南01
linux·服务器·rabbitmq
郝学胜-神的一滴17 小时前
深入理解Linux中的Try锁机制
linux·服务器·开发语言·c++·程序人生
sim202017 小时前
把etcd分区挂到SSD盘
linux·etcd
EndingCoder17 小时前
函数基础:参数和返回类型
linux·前端·ubuntu·typescript
CAU界编程小白17 小时前
Linux系统编程系列之动静态库
linux
济61717 小时前
linux(第十三期)--filezilla使用方法(实现ubuntu和windows11文件互传)-- Ubuntu20.04
linux·运维·ubuntu
HIT_Weston17 小时前
91、【Ubuntu】【Hugo】搭建私人博客:侧边导航栏(五)
linux·运维·ubuntu
oMcLin18 小时前
如何在 Rocky Linux 8.6 上配置并调优 Nginx 与 Lua 脚本,提升 API 网关的性能与并发处理能力
linux·nginx·lua