Linux桌面环境通过VNC远程Linux服务器

举报
yd_221104950 发表于 2020/12/03 01:04:14 2020/12/03
【摘要】 linux桌面环境通过VNC远程Linux服务器 现在有的开发者小伙伴的开发环境是linux系统的,如ubuntu、deepin、centos等,很多情况下都需要远程到一些服务器上进行操作。我们知道如果linux要远程windows可以用rdesktop命令,简单又方便,远程linux服务器,如果那么最常见的就是通过ssh的方式了。但是有很多开发者,还是希望可以在图形...

linux桌面环境通过VNC远程Linux服务器

现在有的开发者小伙伴的开发环境是linux系统的,如ubuntu、deepin、centos等,很多情况下都需要远程到一些服务器上进行操作。我们知道如果linux要远程windows可以用rdesktop命令,简单又方便,远程linux服务器,如果那么最常见的就是通过ssh的方式了。但是有很多开发者,还是希望可以在图形化界面来操作。远程的方式有很多,而今天我们就来看看如何通过在ubuntu上使用vnc客户端远程到centos服务器。其他类unix系统的做法也与此类似。

1.VNC服务端

1.1.在linux服务器上安装桌面环境

这一点很重要,如果linux服务器都没有安装桌面环境,那谈何图形化界面操作。一般,在安装centos或RHEL时都有得选择安装GUI,其他的发行版的服务器可能就是没有得选择,直接就是只有命令行来操作。如果服务器上没有桌面环境,可以参考《RHEL或CentOS安装GNOME》。文章虽然是针对centos和RHEL,其实都只是安装的命令不一样,过程还是一样的。最后,就是要保证linux开机后的运行级别是5(图形化界面)。

1.2.在CentOS上安装VNC Server

1.2.1.第一步:查看是否装过vnc

~# rpm -q tigervnc tigervnc-server 

  
 
  • 1

1.2.2.第二步:安装VNC Server

如果上一步,显示没有安装VNC Server就执行以下命令安装:

~# yum install tigervnc-server -y

  
 
  • 1

1.2.3.为vnc账号创建vncserver服务单元文件

首先把这个模板文件/lib/systemd/system/vncserver@.service拷贝到/etc/systemd/system目录下,并命令为vncserver@:1.service

~# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

  
 
  • 1

vncserver@:1.service文件中有以下两行,要把Type改为simple,要把<USER>改为linux的用户名:

Type=forking
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid

  
 
  • 1
  • 2
  • 3

如果我们现在这份是配置给root的,那么上面就会被改成:

Type=simple
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid

  
 
  • 1
  • 2
  • 3

1.2.4.配置多个桌面

Linux下的VNC可以同时启动多个vncserver,各个vncserver之间用显示编号(display number)来区分,每个vncserver服务监听3个端口

打开/etc/sysconfig/vncservers:

~# vi /etc/sysconfig/vncservers

  
 
  • 1

配置多桌面,格式:VNCSERVERS=“桌面号:使用的用户名 桌面号:使用的用户名…”

VNCSERVERS="1:root 2:kyunban"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared"

  
 
  • 1
  • 2
  • 3

上面指定了每个用户使用的显示号,显示分辨率和允许vncserver同时连接多个vncviewer(客户端)。

1.2.5.执行以下命令使用服务单元文件生效

~# systemctl daemon-reload
~# systemctl enable vncserver@:1.service

  
 
  • 1
  • 2

1.2.6.配置防火墙

~# vim /etc/sysconfig/iptables

  
 
  • 1

打开的文件(一般为空),加入如下语句,当然如果需要更多的端口,可以加5903,5904…

VNC默认使用TCP端口5900至5906。一个服务端可以在5500用监听模式连接一个客户端,使用监听模式可以不用设置防火墙。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT

  
 
  • 1
  • 2

配置好,重启一下防火墙:

~# firewall-cmd --permanent --add-service vnc-server
~# systemctl restart firewalld.service

  
 
  • 1
  • 2

1.2.7启动vnc服务

~# systemctl start vncserver@:1.service

  
 
  • 1

2.在Ubuntu上安装VNC客户端

可以安装vncviewer或Remmina。本例采用Remmina。Remmina 是一款在 Linux 和其他类 Unix 系统下的自由开源、功能丰富、强大的远程桌面客户端,它用 GTK+ 3 编写而成。它适用于那些需要远程访问及使用许多计算机的系统管理员和在外出行人员。它以简单、统一、同质、易用的用户界面支持多种网络协议。Remmina 支持 RDP、VNC、NX、XDMCP 和 SSH。

~$ sudo apt-get install remmina remmina-plugin-* freerdp2-x11 pulseaudio

  
 
  • 1

打开Remmina地址栏输入“主机地址:显示编号"即主机IP加上显示编号(界面编号)的方式登录远程centOS服务器。Remmina的使用方法建议参考Remmina使用

登录设置:
在这里插入图片描述登录远程CentOS服务器:
在这里插入图片描述

3.添加VNC账号(在centos服务器上进行)

添加账号这一块,很多种可能性,我这里提供一种验证过的。

3.1.添加系统用户并设置系统登录密码

root@~# adduser kingkong
root@~# passwd kingkong  // 按提示输入两次密码
new password:
retype new password:

  
 
  • 1
  • 2
  • 3
  • 4

授予kingkong账号sudo权限,使用下面命令打开sudoers文件:

root@~# visudo

  
 
  • 1

并在打开的sudoers文件中加入:

kingkong ALL=ALL

  
 
  • 1

授权完成!

3.2.配置多桌面

打开/etc/sysconfig/vncservers:

root@~# vi /etc/sysconfig/vncservers

  
 
  • 1

加入kingkong

VNCSERVERS="1:root 2:kyunban 3:kingkong"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared"
VNCSERVERARGS[3]="-geometry 1024x768 -alwaysshared"

  
 
  • 1
  • 2
  • 3
  • 4

3.3.为新账号创建一个vnc单元服务文件

拷贝模板文件/lib/systemd/system/vncserver@.service到/etc/systemd/system目录下,并命令为vncserver@:3.service

root@~# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:3.service

  
 
  • 1

vncserver@:3.service文件中有以下两行,要把Type改为simple,要把<USER>改为linux的用户名:

Type=forking
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid

  
 
  • 1
  • 2
  • 3

改成:

Type=simple
ExecStart=/sbin/runuser -l kingkong -c "/usr/bin/vncserver %i"
PIDFile=/home/kingkong/.vnc/%H%i.pid

  
 
  • 1
  • 2
  • 3

3.4.使用账号对应的单元服务文件生效

root@~# systemctl daemon-reload
root@~# systemctl enable vncserver@:4.service

  
 
  • 1
  • 2

3.5.切换账号登录linux系统

不是使用su命令切换过去哦,而是用kingkong登录系统(logout后,就可以选择kingkong登录),切换过去。

在kingkong的家目录下,启动vncserver,因为一开始vnc没有设置密码,所以会提示设置密码:

kingkong@~$ vncserver
Password:
Verify:

  
 
  • 1
  • 2
  • 3

3.6启动对应的单元服务文件,并启动vncserver

kingkong@~$ systemctl start vncserver@:4.service
kingkong@~$ vncservser

  
 
  • 1
  • 2

这时这个账号就配置完成了。

3.7.再次修改vnc账号密码

vnc账号密码不同于系统账号密码,后者是用passwd命令修改的,前者则要切换到账号下,通过vncpasswd命令修改。最好用那个账号登录系统,再修改。

# 删除~/.vnc/passwd文件,这个是记录vnc账号密码的
~# su 账号
~# rm -rf ~/.vnc/passwd
# 使用命令vncpasswd修改密码
~# vncpasswd
Password:
Verify:
# 再重新启动一下
kingkong@~$ systemctl start vncserver@:4.service
kingkong@~$ vncservser

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果没有删除~/.vnc/passwd文件,那么你无论如何改,密码始终都是root的密码,不会改变。

4.异常处理

  • 客户端登录显示too many security failures

    # 列出有哪些vnc进程
    ~# vncserver -list
    # 将进程逐一杀掉,如下是杀掉5
    ~# vncserver -kill :5 
    # 重启vnc
    ~# vncserver
    
        
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 在执行vncserver时,会出现:

    xxx:1 is taken because of /tmp/.X11-unix/X1
    ....
    
        
       
    • 1
    • 2

    处理的办法就是将它们删除掉:

    kingkong@~$ sudo rm -rf /tmp/.X11-unix/*
    
        
       
    • 1

    欢迎关注!

    在这里插入图片描述

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/105835629

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。