Linux桌面環境通過VNC遠程Linux服務器

linux桌面環境通過VNC遠程Linux服務器

現在有的開發者小夥伴的開發環境是linux系統的,如ubuntu、deepin、centost等,很多情況下都需要遠程到一些服務器上進行操作。我們知道如果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.2.2.第二步:安裝VNC Server

如果上一步,顯示沒有安裝VNC Server就執行以下命令安裝:

~# yum install tigervnc-server -y

1.2.3.爲vnc賬號創建vncserver服務單元文件

首先把這個模板文件/lib/systemd/system/[email protected]拷貝到/etc/systemd/system目錄下,並命令爲vncserver@:1.service

~# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

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

如果我們現在這份是配置給root的,那麼上面就會被改成:

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

1.2.4.配置多個桌面

Linux下的VNC可以同時啓動多個vncserver,各個vncserver之間用顯示編號(display number)來區分,每個vncserver服務監聽3個端口

打開/etc/sysconfig/vncservers:

~# vi /etc/sysconfig/vncservers

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

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

上面指定了每個用戶使用的顯示號,顯示分辨率和允許vncserver同時連接多個vncviewer(客戶端)。

1.2.5.執行以下命令使用服務單元文件生效

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

1.2.5.配置防火牆

~# vim /etc/sysconfig/iptables

打開的文件(一般爲空),加入如下語句,當然如果需要更多的端口,可以加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

配置好,重啓一下防火牆:

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

1.2.6啓動vnc服務

~# systemctl start vncserver@:1.service

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

打開Remmina地址欄輸入“主機地址:顯示編號"即主機IP加上顯示編號(界面編號)的方式登錄遠程centOS服務器。Remmina的使用方法建議參考Remmina使用

登錄設置:
在這裏插入圖片描述登錄遠程CentOS服務器:
在這裏插入圖片描述

3.添加VNC賬號(在centos服務器上進行)

添加賬號這一塊,很多種可能性,我這裏提供一種驗證過的。

3.1.添加系統用戶並設置系統登錄密碼

root@~# adduser kingkong
root@~# passwd kingkong  // 按提示輸入兩次密碼
new password:
retype new password:

授予kingkong賬號sudo權限,使用下面命令打開sudoers文件:

root@~# visudo

並在打開的sudoers文件中加入:

kingkong ALL=ALL

授權完成!

3.2.配置多桌面

打開/etc/sysconfig/vncservers:

root@~# vi /etc/sysconfig/vncservers

加入kingkong

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

3.3.爲新賬號創建一個vnc單元服務文件

拷貝模板文件/lib/systemd/system/[email protected]到/etc/systemd/system目錄下,並命令爲vncserver@:3.service

root@~# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:3.service

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

改成:

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

3.3.使用賬號對應的單元服務文件生效

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

3.4.切換賬號登錄linux系統

不是使用su命令切換過去哦,而是用kingkong登錄系統(logout後,就可以選擇kingkong登錄),切換過去。

在kingkong的家目錄下,啓動vncserver,因爲一開始vnc沒有設置密碼,所以會提示設置密碼:

kingkong@~$ vncserver
Password:
Verify:

3.5啓動對應的單元服務文件,並啓動vncserver

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

這時這個賬號就配置完成了。

3.6.再次修改vnc賬號密碼

vnc賬號密碼不同於系統賬號密碼,後者是用passwd命令修改的,前者則要切換到賬號下,通過vncpasswd命令修改。最好用那個賬號登錄系統,再修改。

# 刪除~/.vnc/passwd文件,這個是記錄vnc賬號密碼的
~# su 賬號
~# rm -rf ~/.vnc/passwd
# 使用命令vncpasswd修改密碼
~# vncpasswd
Password:
Verify:
# 再重新啓動一下
kingkong@~$ systemctl start vncserver@:4.service
kingkong@~$ vncservser

如果沒有刪除~/.vnc/passwd文件,那麼你無論如何改,密碼始終都是root的密碼,不會改變。

4.異常處理

  • 客戶端登錄顯示too many security failures

    # 列出有哪些vnc進程
    ~# vncserver -list
    # 將進程逐一殺掉,如下是殺掉5
    ~# vncserver -kill :5 
    # 重啓vnc
    ~# vncserver
    
  • 在執行vncserver時,會出現:

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

    處理的辦法就是將它們刪除掉:

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

    歡迎關注!

    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章