在线解决window和linux对linux远程问题
远程控屏不用愁!TigerVNC 帮你轻松搞定跨设备桌面访问
最近在处理维护 Linux 服务器时,发现他还在纠结 “没有图形界面怎么操作”—— 其实不用这么麻烦!今天就给大家分享一款我常用的远程桌面工具:**TigerVNC**。它开源免费、轻量流畅,不管是 Windows 控 Linux,还是 Linux 控 Linux,都能轻松实现图形化远程操作,尤其适合需要管理带桌面服务器的小伙伴。一、先搞懂:TigerVNC 到底好用在哪?
很多人用过 TeamViewer、AnyDesk,但这类工具要么有免费额度限制,要么在低带宽下卡顿明显。而 TigerVNC 的优势,刚好戳中了 “实用党” 的需求:
- 零成本无限制:完全开源,个人、企业用都不用花钱,也没有连接时长、设备数量的束缚。
- 轻量不占资源:安装包才几十 MB,运行时内存占用低,老旧服务器也能流畅跑。
- 跨平台不挑设备:Windows、macOS、Linux 都能装,我常常用 Windows 笔记本控公司的 CentOS 服务器,操作跟本地桌面没区别。
- 安全可控:支持密码认证,还能搭配 SSH 隧道加密,远程传文件、改配置都放心。
不过要注意:TigerVNC 更适合 “有桌面环境的设备”—— 比如你的 Linux 服务器本来就装了 GNOME、XFCE 桌面,用它远程访问才顺手;如果是纯命令行的服务器,得先装桌面环境哦。
二、实操:CentOS 系统装 TigerVNC,3 步搞定
我以大家常用的 CentOS 为例(Ubuntu 步骤类似,后面会提差异),假设服务器已经有桌面环境,只需要装 TigerVNC 服务器端,跟着做就行:1. 先装 TigerVNC 服务器
打开服务器的终端,用 yum 命令安装(CentOS 自带的包管理器,不用额外找安装包):sudo yum install -y tigervnc-server
等进度条跑完,就安装完成了。如果是 Ubuntu/Debian 系统,把命令换成sudo apt install -y tigervnc-standalone-server就行。
2. 设个 VNC 密码(关键!)
注意:这个密码不是服务器的登录密码,是专门用于 VNC 连接的,建议设 6-8 位,好记又安全。先切换到你常用的用户(别用 root,不安全),比如我的用户叫 “linda”:
su - linda # 切换用户
vncpasswd # 设置VNC密码
按提示输入密码,再确认一遍。会问 “要不要设仅查看密码”—— 选 “n” 就行,不然自己远程时只能看不能操作,麻烦。
3. 配置开机启动,不怕服务器重启
装完后如果服务器重启,VNC 服务会掉,得配置成开机自启。首先创建一个服务文件,告诉系统怎么启动 VNC:
sudo nano /etc/systemd/system/vncserver@.service
把下面的内容复制进去,注意把 “linda” 换成你的用户名,“/home/linda” 换成你的家目录:
[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,后面会讲端口):
sudo systemctl daemon-reload # 重新加载服务配置
sudo systemctl enable vncserver@1.service # 开机自启
sudo systemctl start vncserver@1.service # 现在启动
最后开放防火墙端口(CentOS 默认开了防火墙,不开放的话连不上):
sudo firewall-cmd --permanent --add-port=5901/tcp # 开放5901端口
sudo firewall-cmd --reload # 重启防火墙生效
一件部署的脚步
#!/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 ]]; thenprint_info "当前是root用户,继续执行..."elseprint_error "请使用root权限运行此脚本!"print_info "可以使用: sudo bash $0"exit 1fi
}# 检查系统是否为CentOS
check_os() {if [[ -f /etc/redhat-release ]]; thenprint_info "检测到CentOS系统"elseprint_error "此脚本仅适用于CentOS系统!"exit 1fi
}# 安装TigerVNC服务器
install_tigervnc() {print_info "开始安装TigerVNC服务器..."# 更新系统包yum update -y# 安装EPEL仓库(如果尚未安装)if ! yum repolist | grep -q "epel"; thenprint_info "安装EPEL仓库..."yum install -y epel-releasefi# 安装TigerVNC服务器yum install -y tigervnc-serverif [[ $? -eq 0 ]]; thenprint_info "TigerVNC服务器安装成功!"elseprint_error "TigerVNC服务器安装失败!"exit 1fi
}# 配置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.serviceprint_info "VNC服务配置文件已创建: /etc/systemd/system/vncserver@:1.service"# 重新加载systemdsystemctl 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.servicesystemctl start vncserver@:1.service# 检查服务状态if systemctl is-active --quiet vncserver@:1.service; thenprint_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} 连接"elseprint_error "VNC服务启动失败!"systemctl status vncserver@:1.service --no-pager -lfi
}# 配置防火墙
configure_firewall() {print_info "配置防火墙..."# 检查firewalld是否运行if systemctl is-active --quiet firewalld; thenprint_info "添加VNC服务到防火墙..."firewall-cmd --permanent --add-service=vnc-serverfirewall-cmd --reloadprint_info "防火墙已配置,允许VNC连接"elseprint_warning "firewalld未运行,跳过防火墙配置"fi
}# 显示使用说明
show_usage() {echoprint_info "=== TigerVNC服务器安装完成 ==="echoprint_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 命令"echoprint_warning "安全提示:"print_warning "- 建议使用强密码"print_warning "- 考虑使用SSH隧道进行安全连接"print_warning "- 仅在可信网络中使用VNC"
}# 主函数
main() {echoprint_info "=== TigerVNC服务器安装脚本 ==="echo# 执行安装步骤check_rootcheck_osinstall_tigervncconfigure_vncset_vnc_passwordstart_vnc_serviceconfigure_firewallshow_usage
}# 执行主函数
main
三、怎么连?客户端操作超简单
服务器端弄好后,本地电脑装个 TigerVNC 客户端就能连了。1. 装客户端
+ **Windows/macOS**:直接去[Ti](https://tigervnc.org/)[gerVN](https://tigervnc.org/)[C 官网](https://tigervnc.org/)下载,选对应系统的 “Viewer” 版本,安装时一路点下一步就行。 + **Linux**:Ubuntu 用sudo apt install tigervnc-viewer,CentOS 用sudo yum install tigervnc-viewer。2. 3 步连远程桌面
打开客户端,会弹出一个 “VNC Server” 输入框:
- 输入服务器地址 + 端口,格式是 “IP: 端口编号”。比如我的服务器 IP 是 192.168.1.100,端口编号是 1(对应 5901),就输192.168.1.100:1。
- 点 “Connect”,会提示输入 VNC 密码,就是刚才设的那个。
- 密码输对后,就能看到远程服务器的桌面了!鼠标、键盘都能正常用,跟坐在服务器前操作一样。
四、避坑指南:这些问题我踩过,你别再犯
用了这么久 TigerVNC,遇到过几个常见问题,整理出来帮大家省时间:1. 连接超时 / 连不上?
先检查两个点:- 服务器防火墙是不是真的开放了 5901 端口?用sudo firewall-cmd --list-ports看看,有没有 “5901/tcp”。
- 服务器 IP 对不对?本地能不能 ping 通服务器(Windows cmd 里输ping 服务器IP,Linux 终端输ping 服务器IP)。
2. 连上去是黑屏?
大概率是xstartup脚本配置错了。这个脚本是告诉 VNC “用哪个桌面环境”,按下面改就行:nano ~/.vnc/xstartup # 编辑脚本
把内容换成:
#!/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):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 那么多花里胡哨的功能,但胜在稳定、免费、不绑架用户。如果你经常需要远程管理带桌面的服务器,或者在家访问公司电脑,试试它绝对不亏。如果操作中遇到其他问题,欢迎在评论区留言,我会尽量帮大家解答~ 觉得有用的话,别忘了点赞收藏,下次需要时就能快速找到啦!