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

引言

远程访问Ubuntu桌面环境对于系统管理员和远程工作者来说是一项重要功能。本文将介绍如何在Ubuntu系统上安装和配置KasmVNC,这是一个现代化的VNC服务器,能够提供流畅、安全的远程桌面体验。

KasmVNC简介

KasmVNC是一个基于TigerVNC的改进版本,专为云原生和现代web技术设计。它提供了更好的性能、安全性和用户体验。

准备工作

在开始安装KasmVNC之前,我们需要完成一些准备工作:

1. 远程登录SSH

如果您是在远程操作Ubuntu服务器,首先需要通过SSH登录。在终端中输入以下命令:

1
ssh user@server_ip

如果需要保持连接,可以使用以下命令:

1
ssh  -o ServerAliveInterval=60 -o ServerAliveCountMax=120 user@server_ip

如果有指定端口,可以使用以下命令:

1
ssh -p 22 user@server_ip

2. 更新系统

首先,确保您的Ubuntu系统是:

1
2
sudo apt update
sudo apt upgrade

3. 检查系统版本

在安装KasmVNC之前,我们需要确认当前Ubuntu系统的版本。运行以下命令:

1
lsb_release -a

这将显示您的Ubuntu版本信息,包括发行版本号和代号。请记下这些信息,因为在后续步骤中选择KasmVNC版本时会用到。
执行后比如显示如下信息:

1
2
3
4
5
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy

4. 检查系统架构

接下来,我们需要确认系统的架构。运行以下命令:

1
uname -m

这将显示系统的架构信息。常见的输出有:

  • x86_64:64位系统
  • i686i386:32位系统
  • aarch64:64位ARM架构

请记下这个信息,因为在选择KasmVNC安装包时需要用到。

5. 安装必要的依赖

1
sudo apt install -y curl

安装KasmVNC

1. 下载KasmVNC

根据您的Ubuntu版本和系统架构,从KasmVNC的GitHub发布页面下载适当的安装包。以下是不同Ubuntu版本的选择指南(使用最新版本v1.3.2):

  • 对于Ubuntu 22.04 (Jammy Jellyfish):

    • 64位x86系统(x86_64):
      1
      wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_jammy_1.3.2_amd64.deb
    • 64位ARM架构(aarch64):
      1
      wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_jammy_1.3.2_arm64.deb
  • 对于Ubuntu 20.04 (Focal Fossa):

    • 64位x86系统(x86_64):
      1
      wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_focal_1.3.2_amd64.deb
    • 64位ARM架构(aarch64):
      1
      wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_focal_1.3.2_arm64.deb
  • 对于Ubuntu 24.04 (Noble Numbat):

    • 64位x86系统(x86_64):
      1
      wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_noble_1.3.2_amd64.deb
    • 64位ARM架构(aarch64):
      1
      wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_noble_1.3.2_arm64.deb

请注意,您可以在 KasmVNC的GitHub发布页面 查看最新版本号和可用的包。

如果您不确定您的Ubuntu版本,可以使用之前运行的 lsb_release -a 命令的输出结果来选择正确的包。

2. 安装KasmVNC

首先,下载 KasmVNC 安装包:

1
wget https://github.com/kasmtech/KasmVNC/releases/download/v1.3.2/kasmvncserver_jammy_1.3.2_amd64.deb

然后,使用 dpkg 命令安装下载的 .deb 包:

1
sudo dpkg -i kasmvncserver_jammy_1.3.2_amd64.deb

注意:尽管我们下载的是 1.3.2 版本,但安装后显示的版本可能仍然是 1.2.0-1。这可能是因为包的内部版本号没有更新。不过,只要安装过程没有报错,通常就意味着安装成功了。

如果安装过程中出现依赖问题,可以运行以下命令解决:

1
sudo apt --fix-broken install

安装完成后,我们可以检查 KasmVNC 的版本:

1
dpkg -s kasmvncserver | grep Version

这个命令会显示已安装的 KasmVNC 包的版本。

3. 配置KasmVNC

安装完成后,我们需要配置KasmVNC:

  1. 检查 KasmVNC 版本:

由于 kasmvncserver --version 命令可能不会直接显示版本信息,我们可以使用以下方法来查看 KasmVNC 的版本:

1
dpkg -s kasmvncserver | grep Version

这个命令会显示已安装的 KasmVNC 包的版本。

  1. 初始化 KasmVNC 配置:

运行以下命令来初始化 KasmVNC 配置:

1
kasmvncserver

在首次运行这个命令时,您会看到以下提示:

1
2
3
4
5
6
7
8
Creating default config /root/.vnc/kasmvnc.yaml
xauth: file /root/.Xauthority does not exist

In order to control your desktop, you need a KasmVNC user with write
permissions. Select what action to take:

[1] Create a new user with write access
[2] Start KasmVNC without a user with write access

选择选项 [1] 来创建一个具有写入权限的新用户。这将确保您有足够的权限来控制桌面。

创建用户后,您会看到类似以下的输出:

1
2
3
4
5
6
7
8
9
10
11
12
New 'US706980102097:1 (root)' desktop is US706980102097:1

Users configured:
root (can use keyboard and mouse)

Log file is /root/.vnc/US706980102097:1.log

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup

Paste this url in your browser:
https://127.0.1.1:8444

这个输出提供了几个重要的信息:

  • KasmVNC 已成功创建了一个新的桌面会话。
  • 日志文件的位置:/root/.vnc/US706980102097:1.log
  • 默认的启动脚本位置:/root/.vnc/xstartup
  • 访问 KasmVNC 的 URL:https://127.0.1.1:8444

在大多数情况下,这个默认配置已经足够使用,您可以直接尝试访问 KasmVNC。

  1. (可选)编辑KasmVNC配置文件:

如果您需要自定义配置,例如更改监听端口或IP地址,可以编辑配置文件:

1
sudo nano /etc/kasmvnc/kasmvnc.yaml

在配置文件中,更新以下设置:

1
2
http:
listen: 0.0.0.0:8444

这将允许KasmVNC在所有网络接口上监听8444端口。

  1. 管理KasmVNC会话:

安装完成后,KasmVNC 通常不会作为系统服务运行,而是以用户会话的形式运行。要查看当前运行的 VNC 会话,可以使用以下命令:

1
vncserver -list

如果没有运行中的会话,您会看到类似这样的输出:

1
No VNC server running for this user.

要启动一个新的 KasmVNC 会话,可以使用以下命令:

1
vncserver

这将启动一个新的 VNC 会话并显示会话信息,包括访问 URL。

如果您想停止某个特定的 VNC 会话,可以使用以下命令:

1
vncserver -kill :1

这里的 :1 是会话号,您可以根据 vncserver -list 的输出来确定要停止的会话号。

  1. (可选)配置KasmVNC自启动:

如果您希望 KasmVNC 在系统启动时自动运行,可以创建一个系统服务。创建文件 /etc/systemd/system/kasmvnc.service

1
sudo nano /etc/systemd/system/kasmvnc.service

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=KasmVNC Server
After=network.target

[Service]
Type=forking
User=your_username
ExecStart=/usr/bin/vncserver
ExecStop=/usr/bin/vncserver -kill :1

[Install]
WantedBy=multi-user.target

请将 your_username 替换为您的实际用户名。

然后,启用并启动服务:

1
2
sudo systemctl enable kasmvnc.service
sudo systemctl start kasmvnc.service

现在,KasmVNC 将在系统启动时自动运行。

  1. 配置SSL证书:

如果您遇到 “/etc/ssl/private/ssl-cert-snakeoil.key: certificate file doesn’t exist or isn’t a file” 错误,这意味着KasmVNC无法找到默认的SSL证书。您可以通过以下步骤生成一个自签名证书:

a. 安装ssl-cert包(如果尚未安装):

1
sudo apt install ssl-cert

b. 生成自签名证书:

1
sudo make-ssl-cert generate-default-snakeoil --force-overwrite

c. 确保KasmVNC有权限访问这些文件:

1
2
3
sudo chmod 644 /etc/ssl/certs/ssl-cert-snakeoil.pem
sudo chmod 640 /etc/ssl/private/ssl-cert-snakeoil.key
sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key

d. 将您的用户添加到ssl-cert组:

1
sudo usermod -a -G ssl-cert $USER

e. 重新登录以使组更改生效,或者运行:

1
newgrp ssl-cert

f. 重新启动KasmVNC服务:

1
2
vncserver -kill :1
vncserver

这些步骤应该解决SSL证书的问题,允许KasmVNC正常启动和运行。

开启端口访问

为了能从外部网络访问 KasmVNC您需要确保服务器的防火墙允许 KasmVNC 使用的端口(默认为 8444)。这通常涉及两个层面的配置:操作系统级别和云服务提供商级别(如果适用)。

操作系统级别(使用 UFW)

  1. 检查 UFW 状态:
1
sudo ufw status

如果 UFW 未启用,请启用它:

1
sudo ufw enable
  1. 开启端口 8444:
1
sudo ufw allow 8444
  1. 重新加载 UFW 规则:
1
sudo ufw reload

云服务提供商级别

如果您使用的是云服务提供商(如 AWS、Oracle Cloud、Google Cloud Platform 等),您还需要在云平台的安全组或防火墙规则中允许相应的端口访问。

AWS EC2 实例

  1. 登录 AWS 控制台
  2. 导航到 EC2 服务
  3. 选择您的实例,然后点击”安全”标签
  4. 点击安全组名称
  5. 在”入站规则”标签中,点击”编辑入站规则”
  6. 添加一条新规则:
    • 类型:自定义 TCP
    • 端口范围:8444
    • 来源据您的需求选择(例如,”任何位置”或特定 IP 地址)
  7. 保存规则

Oracle Cloud

  1. 登录 Oracle Cloud 控制台
  2. 导航到”网络”>”虚拟云网络”
  3. 选择您的 VCN,然后点击相应的安全列表
  4. 点击”添加入站规则”
  5. 添加以下规:
    • 源 CIDR:0.0.0.0/0(或您指定的 IP 范围)
    • IP 协议:TCP
    • 目标端口范围:8444
  6. 点击”添加入站规则”保存

Google Cloud Platform

  1. 登录 Google Cloud Console
  2. 导航到”VPC 网络”>”防火墙”
  3. 点击”创建防火墙规则”
  4. 填写以下信息:
    • 名称:允许-kasmvnc(或其他描述性名称)
    • 网络:选择您的 VPC 网络
    • 优先级:1000(或您希望的优先级)
    • 方向:入站
    • 动作:允许
    • 目标:网络中的所有实例(或选择特定标记)
    • 来源 IP 范围:0.0.0.0/0(或您指定的 IP 范围)
    • 协议和端口:指定的协议和端口 > TCP:8444
  5. 点击”创建”保存规则

请注意,以上步骤可能会随着云服务提供商界面的更新而略有变化。始终建议参考最新的官方文档来进行具体操作。

完成这些步骤后,KasmVNC 应该可以从外部网络访问了。请记住,出于安全考虑,建尽可能限制访问来源,只允许必要 IP 地或范围访问 KasmVNC 端口。

访问KasmVNC

现在,您可以通过Web浏览器访问KasmVNC:

  1. 在浏览器中输入:https://your_server_ip:8444
  2. 接受自签名证书的警告(如果出现)
  3. 输入之前设置的VNC密码

配置桌面环境

在成功连接到 KasmVNC 后,您可能会发现只能看到一个黑色窗口,而不是完整的 Ubuntu 桌面环境。这是因为我们还需要配置一个桌面环境来运行。以下是设置 GNOME 桌面环境的步骤:

1. 安装 GNOME 桌面环境

首先,我们需要安装 GNOME 桌面环境:

1
2
sudo apt update
sudo apt install ubuntu-desktop gnome-session gdm3

这个命令会安装完整的 GNOME 桌面环境,包括所有常用的 GNOME 应用程序。

2. 配置 VNC 启动脚本

编辑 VNC 的启动脚本文件:

1
nano ~/.vnc/xstartup

将文件内容替换为以下内容:

1
2
3
4
5
6
7
8
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
export XDG_SESSION_TYPE=x11
export GDK_BACKEND=x11

gnome-session &

保存并退出编辑器(在 nano 中,按 Ctrl+X,然后按 Y,最后按 Enter)。

3. 设置执行权限

确保启动脚本有执行权限:

1
chmod +x ~/.vnc/xstartup

4. 重启 VNC 服务

停止当前运行的 VNC 会话(如果有的话):

1
vncserver -kill :1

然后启动一个新的会话:

1
vncserver

5. 重新连接

现在,重新使用您的 VNC 客户端或网页浏览器连接到 KasmVNC。这次,您应该能看到完整的 GNOME 桌面环境了。

注意事项

  • GNOME 桌面环境比 Xfce4 更消耗资源。请确保您的服务器有足够的 CPU 和内存来运行 GNOME。
  • 如果在启动桌面环境时遇到问题,可以查看 VNC 日志文件(通常位于 ~/.vnc/ 目录下)以获取更多信息。
  • 某些 GNOME 功能可能在 VNC 环境中不能完全正常工作。如果遇到问题,可以尝试使用 GNOME Classic 会话,这通常更适合远程桌面使用。

通过以上步骤,您应该能够在 KasmVNC 中看到并操作完整的 GNOME 桌面环境了。

安装 Google Chrome

为了提供更好的浏览体验,我们将直接安装 Google Chrome。以下是安装步骤:

  1. 首先,更新系统包列表:
1
sudo apt update
  1. 安装必要的依赖:
1
sudo apt install wget dpkg
  1. 下载最新的 Google Chrome .deb 包:
1
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
  1. 安装 Chrome:
1
sudo dpkg -i google-chrome-stable_current_amd64.deb
  1. 如果在安装过程中出现依赖问题,运行以下命令来解决:
1
sudo apt --fix-broken install
  1. 安装完成后,您可以从应用程序菜单中启动 Chrome,或者使用以下命令从终端启动:
1
google-chrome-stable
  1. 在远程桌面环境中使用 Chrome 时,可能需要添加 --no-sandbox 参数来禁用沙盒模式。创建一个桌面快捷方式,使用以下命令启动 Chrome:
1
google-chrome-stable --no-sandbox

注意:禁用沙盒可能会降低浏览器的安全性,所以在使用这个选项时要格外小心。

  1. 如果您希望将 Chrome 设置为默认浏览器,可以在 GNOME 桌面上点击 “Activities” > “Settings” > “Default Applications”,然后在 “Web” 部分选择 Google Chrome。

故障排除

如果在使用 Chrome 时遇到问题,请尝试以下步骤:

  1. 确保 DISPLAY 环境变量设置正确:
1
echo $DISPLAY

如果没有输出或输出不正确,设置它:

1
export DISPLAY=:1
  1. 检查 Chrome 是否能从终端启动:
1
google-chrome-stable --no-sandbox
  1. 如果遇到 “Missing X server or $DISPLAY” 错误,请尝试以下步骤:

    a. 确保 X11 转发已启用。如果您是通过 SSH 连接的,请使用 -X 参数:

    1
    ssh -X user@server_ip

    b. 安装 xauth 包(如果尚未安装):

    1
    sudo apt install xauth

    c. 确保 .Xauthority 文件存在且权限正确:

    1
    2
    touch ~/.Xauthority
    chmod 600 ~/.Xauthority

    d. 尝试使用 xvfb-run 来运行 Chrome:

    1
    2
    sudo apt install xvfb
    xvfb-run google-chrome-stable --no-sandbox
  2. 如果遇到 “cannot start document portal” 错误,请尝试以下步骤:

    a. 设置 XDG_RUNTIME_DIR 环境变量:

    1
    export XDG_RUNTIME_DIR="/run/user/$(id -u)"

    b. 创建必要的目录:

    1
    mkdir -p $XDG_RUNTIME_DIR/doc

    c. 确保目录权限正确:

    1
    sudo chown -R $USER:$USER $XDG_RUNTIME_DIR
  3. 检查 VNC 服务器是否正在运行:

1
vncserver -list

如果没有运行的会话,启动一个新会话:

1
vncserver
  1. 如果问题仍然存在,检查系统日志:
1
journalctl -xe | grep chrome

这将显示与 Chrome 相关的最近系统日志,可能会提供更多关于错误原因的线索。

通过以上步骤,您应该能够在 KasmVNC 的远程桌面环境中成功启动和使用 Google Chrome。如果仍然遇到问题,可能需要检查 KasmVNC 的配置,确保它正确地设置了 X 服务器环境。

安全性考虑

为了增强安全性,建议:

  1. 配置防火墙,只允许特定IP访问8444端口
  2. 使用反向代理(如Nginx)并配置SSL/TLS加密
  3. 启用两步验证

配置多用户访问

KasmVNC 支持多个用户同时登录使用。以下是配置多用户访问的步骤:

1. 创建多个用户并设置权限

首先,为每个需要访问的用户创建一个系统账户,并设置必要的权限:

  1. 创建用户:
1
sudo adduser username

username 替换为实际的用户名。按照提示设置密码和其他信息。

  1. 为新用户添加 sudo 权限:
1
sudo usermod -aG sudo username
  1. 将新用户添加到 ssl-cert 组:
1
sudo usermod -aG ssl-cert username

2. 为每个用户配置 VNC 会话

对于每个用户,需要执行以下步骤:

a. 切换到该用户:

1
su - username

如果需要sudo权限:

1
sudo usermod -aG sudo username

c. 创建 .vnc 目录:

1
mkdir -p ~/.vnc

d. 初始化 KasmVNC 配置:

1
kasmvncserver

按照提示设置 VNC 密码。

查看当前的 VNC 会话:

1
kasmvncserver -list

停止一个 VNC 会话:

1
2
# 停止会话号为 1 的 VNC 会话,就是你刚才创建的,要看-list的输出
kasmvncserver -kill :1

c. 创建用户的 VNC 启动脚本:

1
2
3
4
5
6
7
8
9
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1

startxfce4 &
EOF

查看创建的 VNC 启动脚本:

1
cat ~/.vnc/xstartup

启动 VNC 会话:

1
kasmvncserver

启动 输入法

1
fcitx5 -d

添加执行权限

chmod +x ~/.vnc/xstartup

1
2
3
4
5
6
7
8
  

### 3. 配置不同的端口

为了避免端口冲突,我们需要为每个用户配置不同的端口。编辑 KasmVNC 配置文件:

```bash
sudo nano /etc/kasmvnc/kasmvnc.yaml

为每个用户添加一个新的监听配置,例如:

1
2
3
4
http:
- listen: 0.0.0.0:8444 # 默认用户
- listen: 0.0.0.0:8445 # 用户1
- listen: 0.0.0.0:8446 # 用户2

4. 重启 KasmVNC 服务

对每个用户重新启动 VNC 服务:

1
2
vncserver -kill :1
vncserver

5. 访问多用户 VNC

现在,不同的用户可以通过不同的 URL 访问各自的 VNC 会话:

  • 默认用户:https://your_server_ip:8444
  • 用户1:https://your_server_ip:8445
  • 用户2:https://your_server_ip:8446

注意事项

  • 确保为每个新端口在防火墙和云服务提供商的安全组中开放相应的访问权限。
  • 每个用户会话都会消耗服务器资源,请确保服务器有足够的 CPU 和内存来支持多用户同时访问。
  • 出于安全考虑,建议为每个用户设置强密码,并考虑使用 SSL/TLS 加密连接。

通过以上步骤,您可以实现多个用户同时登录并使用 KasmVNC 远程桌面。每个用户将拥有自己独立的桌面环境和会话。

安装 Cursor AI 代码编辑器

Cursor 是一个强大的 AI 辅助代码编辑器,可以帮助开发者提高编码效率。以下是在 Ubuntu 上安装 Cursor 的步骤:

  1. 首先,确保您的系统是最新的:
1
sudo apt update && sudo apt upgrade -y
  1. 安装必要的依赖:
1
sudo apt install wget
  1. 下载最新版本的 Cursor .deb 包。您可以从 Cursor 的官方网站获取最新的下载链接。以下命令使用的是撰写本文时的最新版本,您可能需要根据实际情况更新链接:
1
wget https://download.cursor.sh/linux/appimages/x64/Cursor-0.2.6.AppImage
  1. 将下载的 AppImage 文件移动到一个合适的位置,并赋予执行权限:
1
2
sudo mv Cursor-0.2.6.AppImage /usr/local/bin/cursor
sudo chmod +x /usr/local/bin/cursor
  1. 如何创建一个桌面快捷方式,以便在图形界面中启动 Cursor:

要创建一个桌面快捷方式,请按照以下步骤操作:

  1. 打开终端

  2. 使用文本编辑器(如 nano)创建并编辑 .desktop 文件:

1
2
3
4
5
6
7
8
cat << EOF > ~/.local/share/applications/cursor.desktop
[Desktop Entry]
Name=Cursor
Exec=/usr/local/bin/cursor
Icon=cursor
Type=Application
Categories=Development;
EOF
  1. 现在,您可以通过命令行或桌面快捷方式启动 Cursor:
1
cursor

或者在应用程序菜单中找到 Cursor 图标并点击启动。

注意事项

  • Cursor 需要一个有效的 OpenAI API 密钥才能使用其 AI 功能。请确保您有一个有效的 API 密钥,并在首次启动 Cursor 时按照提示进行配置。
  • 如果您在远程桌面环境中使用 Cursor,可能需要确保您的 VNC 会话有足够的资源(CPU、内存)来运行它。
  • Cursor 是一个持续更新的软件,建议定期检查官方网站以获取最新版本。

通过以上步骤,您应该能够在 Ubuntu 系统上成功安装和使用 Cursor AI 代码编辑器了。这将为您的远程开发环境增添一个强大的工具。

结论

通过以上步骤,您已经成功在Ubuntu上安装和配置了KasmVNC。这为您提供了一个现代、高效的远程桌面解决方案。记得定期更新KasmVNC以获取最新的功能和安全补丁。

如果在安装或使用过程中遇到任何问题,可以查阅KasmVNC的官方文档或在其GitHub仓库中寻求帮助。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者,更多功能请访问博客站



在Ubuntu上安装KasmVNC实现轻松远程桌面访问
https://blog.fxcxy.com/2024/10/04/在Ubuntu上安装KasmVNC实现轻量远程桌面访问/
作者
spatacus
发布于
2024年10月4日
许可协议