在线解决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 那么多花里胡哨的功能,但胜在稳定、免费、不绑架用户。如果你经常需要远程管理带桌面的服务器,或者在家访问公司电脑,试试它绝对不亏。

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

相关推荐
A小辣椒18 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式