在线解决window和linux对linux远程问题

远程控屏不用愁!TigerVNC 帮你轻松搞定跨设备桌面访问

最近在处理维护 Linux 服务器时,发现他还在纠结 "没有图形界面怎么操作"------ 其实不用这么麻烦!今天就给大家分享一款我常用的远程桌面工具:**TigerVNC**。它开源免费、轻量流畅,不管是 Windows 控 Linux,还是 Linux 控 Linux,都能轻松实现图形化远程操作,尤其适合需要管理带桌面服务器的小伙伴。

一、先搞懂:TigerVNC 到底好用在哪?

![](https://i-blog.csdnimg.cn/img_convert/a094f4f63138b79a6ef3d9721e8f6c6d.jpeg)

很多人用过 TeamViewer、AnyDesk,但这类工具要么有免费额度限制,要么在低带宽下卡顿明显。而 TigerVNC 的优势,刚好戳中了 "实用党" 的需求:

  • 零成本无限制:完全开源,个人、企业用都不用花钱,也没有连接时长、设备数量的束缚。
  • 轻量不占资源:安装包才几十 MB,运行时内存占用低,老旧服务器也能流畅跑。
  • 跨平台不挑设备:Windows、macOS、Linux 都能装,我常常用 Windows 笔记本控公司的 CentOS 服务器,操作跟本地桌面没区别。
  • 安全可控:支持密码认证,还能搭配 SSH 隧道加密,远程传文件、改配置都放心。

不过要注意:TigerVNC 更适合 "有桌面环境的设备"------ 比如你的 Linux 服务器本来就装了 GNOME、XFCE 桌面,用它远程访问才顺手;如果是纯命令行的服务器,得先装桌面环境哦。

二、实操:CentOS 系统装 TigerVNC,3 步搞定

我以大家常用的 CentOS 为例(Ubuntu 步骤类似,后面会提差异),假设服务器已经有桌面环境,只需要装 TigerVNC 服务器端,跟着做就行:

1. 先装 TigerVNC 服务器

打开服务器的终端,用 yum 命令安装(CentOS 自带的包管理器,不用额外找安装包):

plain 复制代码
sudo yum install -y tigervnc-server

等进度条跑完,就安装完成了。如果是 Ubuntu/Debian 系统,把命令换成sudo apt install -y tigervnc-standalone-server就行。

2. 设个 VNC 密码(关键!)

注意:这个密码不是服务器的登录密码,是专门用于 VNC 连接的,建议设 6-8 位,好记又安全。

先切换到你常用的用户(别用 root,不安全),比如我的用户叫 "linda":

plain 复制代码
su - linda  # 切换用户
vncpasswd   # 设置VNC密码

按提示输入密码,再确认一遍。会问 "要不要设仅查看密码"------ 选 "n" 就行,不然自己远程时只能看不能操作,麻烦。

3. 配置开机启动,不怕服务器重启

装完后如果服务器重启,VNC 服务会掉,得配置成开机自启。

首先创建一个服务文件,告诉系统怎么启动 VNC:

plain 复制代码
sudo nano /etc/systemd/system/vncserver@.service

把下面的内容复制进去,注意把 "linda" 换成你的用户名,"/home/linda" 换成你的家目录:

plain 复制代码
[Unit]
Description=TigerVNC服务(端口:%i)
After=network.target  # 网络通了再启动服务
[Service]
Type=forking
User=linda  # 你的用户名
Group=linda # 你的用户组
WorkingDirectory=/home/linda  # 你的家目录
# 启动前先关掉旧的会话,避免冲突
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
# 启动VNC,分辨率1920x1080(可改),端口对应:%i
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1920x1080 :%i
# 停止服务的命令
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target

按Ctrl+O保存,Ctrl+X退出编辑器。

然后启动服务并设为开机自启(这里用 "1" 表示端口,对应 5901,后面会讲端口):

plain 复制代码
sudo systemctl daemon-reload  # 重新加载服务配置
sudo systemctl enable vncserver@1.service  # 开机自启
sudo systemctl start vncserver@1.service   # 现在启动

最后开放防火墙端口(CentOS 默认开了防火墙,不开放的话连不上):

plain 复制代码
sudo firewall-cmd --permanent --add-port=5901/tcp  # 开放5901端口
sudo firewall-cmd --reload  # 重启防火墙生效

一件部署的脚步

sql 复制代码
#!/bin/bash

# 安装TigerVNC服务器脚本
# 适用于CentOS系统

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 打印彩色信息
print_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

print_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否为root用户
check_root() {
    if [[ $EUID -eq 0 ]]; then
        print_info "当前是root用户,继续执行..."
    else
        print_error "请使用root权限运行此脚本!"
        print_info "可以使用: sudo bash $0"
        exit 1
    fi
}

# 检查系统是否为CentOS
check_os() {
    if [[ -f /etc/redhat-release ]]; then
        print_info "检测到CentOS系统"
    else
        print_error "此脚本仅适用于CentOS系统!"
        exit 1
    fi
}

# 安装TigerVNC服务器
install_tigervnc() {
    print_info "开始安装TigerVNC服务器..."
    
    # 更新系统包
    yum update -y
    
    # 安装EPEL仓库(如果尚未安装)
    if ! yum repolist | grep -q "epel"; then
        print_info "安装EPEL仓库..."
        yum install -y epel-release
    fi
    
    # 安装TigerVNC服务器
    yum install -y tigervnc-server
    
    if [[ $? -eq 0 ]]; then
        print_info "TigerVNC服务器安装成功!"
    else
        print_error "TigerVNC服务器安装失败!"
        exit 1
    fi
}

# 配置VNC服务器
configure_vnc() {
    print_info "配置VNC服务器..."
    
    # 创建VNC服务配置文件
    cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
    
    # 获取当前用户名
    CURRENT_USER=$(whoami)
    
    # 替换配置文件中的用户
    sed -i "s/<USER>/$CURRENT_USER/g" /etc/systemd/system/vncserver@:1.service
    
    print_info "VNC服务配置文件已创建: /etc/systemd/system/vncserver@:1.service"
    
    # 重新加载systemd
    systemctl daemon-reload
}

# 设置VNC密码
set_vnc_password() {
    print_warning "请设置VNC密码(至少6位)..."
    su - $SUDO_USER -c "vncpasswd"
}

# 启动VNC服务
start_vnc_service() {
    print_info "启动VNC服务..."
    
    # 启用并启动VNC服务
    systemctl enable vncserver@:1.service
    systemctl start vncserver@:1.service
    
    # 检查服务状态
    if systemctl is-active --quiet vncserver@:1.service; then
        print_info "VNC服务启动成功!"
        
        # 显示服务状态
        systemctl status vncserver@:1.service --no-pager -l
        
        # 获取IP地址
        IP_ADDRESS=$(hostname -I | awk '{print $1}')
        print_info "VNC服务器已启动,可以通过 ${YELLOW}$IP_ADDRESS:5901${NC} 连接"
    else
        print_error "VNC服务启动失败!"
        systemctl status vncserver@:1.service --no-pager -l
    fi
}

# 配置防火墙
configure_firewall() {
    print_info "配置防火墙..."
    
    # 检查firewalld是否运行
    if systemctl is-active --quiet firewalld; then
        print_info "添加VNC服务到防火墙..."
        firewall-cmd --permanent --add-service=vnc-server
        firewall-cmd --reload
        print_info "防火墙已配置,允许VNC连接"
    else
        print_warning "firewalld未运行,跳过防火墙配置"
    fi
}

# 显示使用说明
show_usage() {
    echo
    print_info "=== TigerVNC服务器安装完成 ==="
    echo
    print_info "使用说明:"
    print_info "1. 连接地址: ${YELLOW}<服务器IP>:5901${NC}"
    print_info "2. 查看服务状态: systemctl status vncserver@:1.service"
    print_info "3. 重启VNC服务: systemctl restart vncserver@:1.service"
    print_info "4. 停止VNC服务: systemctl stop vncserver@:1.service"
    print_info "5. 修改VNC密码: 运行 vncpasswd 命令"
    echo
    print_warning "安全提示:"
    print_warning "- 建议使用强密码"
    print_warning "- 考虑使用SSH隧道进行安全连接"
    print_warning "- 仅在可信网络中使用VNC"
}

# 主函数
main() {
    echo
    print_info "=== TigerVNC服务器安装脚本 ==="
    echo
    
    # 执行安装步骤
    check_root
    check_os
    install_tigervnc
    configure_vnc
    set_vnc_password
    start_vnc_service
    configure_firewall
    show_usage
}

# 执行主函数
main

三、怎么连?客户端操作超简单

服务器端弄好后,本地电脑装个 TigerVNC 客户端就能连了。

1. 装客户端

2. 3 步连远程桌面

打开客户端,会弹出一个 "VNC Server" 输入框:

  1. 输入服务器地址 + 端口,格式是 "IP: 端口编号"。比如我的服务器 IP 是 192.168.1.100,端口编号是 1(对应 5901),就输192.168.1.100:1。
  2. 点 "Connect",会提示输入 VNC 密码,就是刚才设的那个。
  3. 密码输对后,就能看到远程服务器的桌面了!鼠标、键盘都能正常用,跟坐在服务器前操作一样。

四、避坑指南:这些问题我踩过,你别再犯

用了这么久 TigerVNC,遇到过几个常见问题,整理出来帮大家省时间:

1. 连接超时 / 连不上?

先检查两个点:

  • 服务器防火墙是不是真的开放了 5901 端口?用sudo firewall-cmd --list-ports看看,有没有 "5901/tcp"。
  • 服务器 IP 对不对?本地能不能 ping 通服务器(Windows cmd 里输ping 服务器IP,Linux 终端输ping 服务器IP)。

2. 连上去是黑屏?

大概率是xstartup脚本配置错了。这个脚本是告诉 VNC "用哪个桌面环境",按下面改就行:

plain 复制代码
nano ~/.vnc/xstartup  # 编辑脚本

把内容换成:

plain 复制代码
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
# 用系统默认的桌面会话
exec $HOME/.xsession 2>/dev/null || exec /etc/X11/xinit/xinitrc

保存后给脚本加执行权限:chmod +x ~/.vnc/xstartup,再重启 VNC 服务:sudo systemctl restart vncserver@1.service。

3. 想多个人同时连?

可以开多个 VNC 会话,比如再开一个端口 2(对应 5902):

plain 复制代码
sudo systemctl enable vncserver@2.service
sudo systemctl start vncserver@2.service
sudo firewall-cmd --permanent --add-port=5902/tcp
sudo firewall-cmd --reload

其他人连接时输服务器IP:2就行,每个会话互不干扰。

五、最后说句心里话

TigerVNC 可能没有 TeamViewer 那么多花里胡哨的功能,但胜在稳定、免费、不绑架用户。如果你经常需要远程管理带桌面的服务器,或者在家访问公司电脑,试试它绝对不亏。

如果操作中遇到其他问题,欢迎在评论区留言,我会尽量帮大家解答~ 觉得有用的话,别忘了点赞收藏,下次需要时就能快速找到啦!

相关推荐
森G4 小时前
2六Ubuntu文件系统移植
linux·ubuntu
dot to one5 小时前
Centos 7 环境下mysql的安装及配置
linux·mysql·centos
「QT(C++)开发工程师」5 小时前
C++语言编程规范-风格
linux·开发语言·c++·qt
-指短琴长-5 小时前
CGroups资源控制实战【Linux】
linux·运维·服务器
昵称什么的不存在6 小时前
WPeChatGPT 插件使用教程(转载)
linux·逆向
码农hbk6 小时前
xv6 源码精读(二)开启MMU、一致性映射页表
linux·服务器
雪碧聊技术6 小时前
Linux命令过关挑战
linux·运维·数据库
liulilittle6 小时前
在 Android Shell 终端上直接运行 OPENPPP2 网关路由配置指南
android·linux·开发语言·网络·c++·编程语言·通信
GoodTimeGGB6 小时前
轻量服务器Lighthouse + 1Panel + Halo,三步打造你的专属网站
服务器·1panel·lighthouse·建站·halo