环境信息
VNC
是一个图形桌面共享系统,可以通过远程连接的方式连接到服务器的图形系统以控制操作系统VNC
包括以下四个部分 : vncserver
,vncviewer
,vncpassword
及 vncconnect
。VNC client
端通过 VNC
协议远程连接到 vnc server
端,进行桌面共享及交互;
安装 tigervnc 安装之前首先要确保系统已安装图形系统,本文以 GNOME Desktop
为图形桌面系统,执行以下命令检查是否已安装 GNOME Desktop
,如果未安装,使用命令 yum groupinstall "GNOME Desktop"
安装
$ yum grouplist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Installed Environment Groups: GNOME Desktop Available Environment Groups: Minimal Install Compute Node ...
桌面系统安装后,使用以下命令,安装 tigervnc
yum install -y tigervnc-server
可以参考 /lib/systemd/system/[email protected]
中的指示,生成服务配置文件:
cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service vim /etc/systemd/system/vncserver@\:1.service
修改以下行,将其中的 <USER>
改为要远程登录的用户名,例如 root
/etc/systemd/system/vncserver@\:1.service ExecStart=/usr/bin/vncserver_wrapper root %i
如果有多个用户需要远程连接,可以重复以上步骤,建立多个配置文件,如 /etc/systemd/system/vncserver@:2.service
,各个服务之间互不影响,关闭一个服务,不影响其他的 vnc
服务 (如关闭: vncserver@:2.service
,vncserver@:1.service
的 vnc
远程依旧可以使用)
修改服务文件后,使用以下命令重新加载服务启动脚本:
启动服务:
systemctl start vncserver@:1.service
服务启动后,会监听 5901 端口,如果有第二个服务,会监听在 5902 端口,以此类推,防火墙需要放通此端口
切换到需要 vnc 远程登录的用户,使用以下命令配置 vnc
远程登录用户的密码(只是 vnc 登录时使用的密码,非系统用户密码)
[root@localhost ~]# su - USER [USER@localhost ~]$ vncpasswd
设置 vncpasswd
密码后,在账号的家目录里就会自动建立 .vnc 文件,其中包括对应用户的 vnc
相关的日志
配置完成后,下载客户端 进行远程登录
常见错误 getpassword error: Inappropriate ioctl for device vncserver@:1.service
服务启动失败,端口未监听
$ netstat -anutp | grep LIST tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 735/rpcbind tcp6 0 0 :::30000 :::* LISTEN 1251/sshd tcp6 0 0 :::80 :::* LISTEN 17064/nginx: master tcp6 0 0 :::8181 :::* LISTEN 17064/nginx: master tcp6 0 0 :::8443 :::* LISTEN 14032/nginx-ingress tcp6 0 0 :::443 :::* LISTEN 17064/nginx: master tcp6 0 0 :::10254 :::* LISTEN 14032/nginx-ingress tcp6 0 0 :::111 :::* LISTEN 735/rpcbind $ systemctl status vncserver@:1.service ● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Tue 2023-05-02 13:29:44 CST; 14s ago Process: 28040 ExecStart=/usr/bin/vncserver_wrapper root %i (code=exited, status=2) Process: 28037 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 28040 (code=exited, status=2) May 02 13:29:44 test systemd[1]: Starting Remote desktop service (VNC)... May 02 13:29:44 test systemd[1]: Started Remote desktop service (VNC). May 02 13:29:44 test vncserver_wrapper[28040]: You will require a password to access your desktops. May 02 13:29:44 test vncserver_wrapper[28040]: getpassword error: Inappropriate ioctl for device May 02 13:29:44 test vncserver_wrapper[28040]: Password:FATAL: 'runuser -l root' failed! May 02 13:29:44 test systemd[1]: vncserver@:1.service: main process exited, code=exited, status=2/INVALIDARGUMENT May 02 13:29:44 test systemd[1]: Unit vncserver@:1.service entered failed state. May 02 13:29:44 test systemd[1]: vncserver@:1.service failed.
解决方法 配置登陆用的 VNC 密码,重启服务
su - root vncpasswd systemctl start vncserver@:1.service