Centos7作為VNCserver,本地使用VNCViewer連接

1.概念

VNC是一個遠程連接工具
VNC is used to display an X windows session running on another computer. Unlike a remote X connection, the xserver is running on the remote computer, not on your local workstation. Your workstation ( Linux or Windows ) is only displaying a copy of the display ( real or virtual ) that is running on the remote machine.

There are several ways to configure the vnc server. This HOWTO shows you how to configure VNC using the 'vncserver' service as supplied by CentOS.

2.安裝

2.1客戶端:

yum install vnc

2.2 服務端:

1) 保證已安裝windows桌面:yum groupinstall "GNOME Desktop Environment"
或者最小化安裝:yum install xterm
2) 安裝vnc-server:
yum install vnc-server

3.設置并運行

3.1 創建一個用于vnc連接的用戶user01,并切換到user01登陸,當然,你也可以直接用root用戶或其他已存在的普通用戶:

[clouder@ana53 soft]$ su root
密碼:
[root@ana53 soft]# useradd user01
[root@ana53 soft]# passwd user01
更改用戶 user01 的密碼 。
新的 密碼:
無效的密碼: 密碼少于 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@ana53 soft]# su - user01
[user01@ana53 ~]$ cd ~
[user01@ana53 ~]$ ll .vnc
ls: cannot access .vnc: No such file or directory

3.2 執行vncserver ,第一次執行會要求設置用于客戶端通過vnc連接該用戶的密碼,以后想更改可以通過vncpasswd更改該連接密碼。

注意最后問是否設置一個只讀密碼要選否,否則客戶端登陸只會看到一個黑屏:

[user01@ana53 ~]$ vncserver 
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/user01/.Xauthority does not exist
New 'ana53:3 (user01)' desktop is ana53:3
Creating default startup script /home/user01/.vnc/xstartup
Creating default config /home/user01/.vnc/config
Starting applications specified in /home/user01/.vnc/xstartup
Log file is /home/user01/.vnc/ana53:3.log

默認是從1開始,但我當前已經有2個vncserver運行,所以現在是3了,第一次執行vncserver后,會在該用戶的家目錄下創建一個.vnc目錄

[user01@ana53 ~]$ ll .vnc/
total 40
-rw-rw-r-- 1 user01 user01 23646 Aug 14 09:56 ana53:3.log
-rw-rw-r-- 1 user01 user01     5 Aug 14 09:55 ana53:3.pid
-rw-r--r-- 1 user01 user01   332 Aug 14 09:55 config
-rw------- 1 user01 user01     8 Aug 14 09:55 passwd
-rwxr-xr-x 1 user01 user01    92 Aug 14 09:55 xstartup

3.3 vncserver -list 查看當前用戶開了多少個vncserver,ps -ef |grep vnc看到我有其他2個用戶也起了vncserver,這個可以忽略哈:

[user01@ana53 ~]$ vncserver -list
TigerVNC server sessions:
X DISPLAY # PROCESS ID
:3      2338[user01@ana53 ~]$ ps -ef|grep vnc
user1     1750     1  0 09:54 pts/4    00:00:00 /usr/bin/Xvnc :2 -auth /home/user1/.Xauthority -desktop ana53:2 (user1) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user1/.vnc/passwd -rfbport 5902 -rfbwait 30000
user01    2338     1  1 09:55 pts/2    00:00:00 /bin/Xvnc :3 -auth /home/user01/.Xauthority -desktop ana53:3 (user01) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user01/.vnc/passwd -rfbport 5903 -rfbwait 30000
user01    3215  2268  0 09:56 pts/2    00:00:00 grep --color=auto vnc
root     31155     1  0 09:34 ?        00:00:01 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000

3.4 客戶端連接服務端:

本機也可以作為客戶端vnc連接到自己,有條件的再找一個機器作為客戶端連接比較符合實際應用場景,我使用本機作為客戶端通過vnc連接自己,
我通過這個網址下載vncviewer 客戶端工具:
https://www.techspot.com/downloads/downloadnow/5760/?evp=bec5c83724706eae8692a26f014582ed&file=4
輸入127.0.0.1:5903 ,輸入我設置的vnc密碼,連接成功。但出現花屏,原因是分辨率設得太低,于是vnc連接成功后:
鼠標放到頂部,點擊"Properties"圖標--Options--General--Picture quality:設置為Medium,High,或Automatic,點擊右下方ok確認
1461765-20180814095240081-1957394191.png
1461765-20180814095245977-273754244.png

4.其他問題

4.1 第一次執行vncserver,里面好像有句錯誤提示bad display name in ……,原因是解析不了這個hostname,通過在/etc/hosts添加ip 和hostname映射解決:

[root@ana53 .vnc]# vncserver 
xauth: (stdin):1:  bad display name "ana53:2" in "add" command  New 'ana53:2 (clouder)' desktop is ana53:2  Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/ana53:2.
解決方法:vi /etc/hosts:
192.168.1.253 ana53

4.2 vncviewer連接,始終黑屏:

1) 可能你在第一次給用戶設置vnc密碼時,最后Would you like to enter a view-only password (y/n)? 回答了y,所以,你應該登陸ssh那個用戶,運行vncpasswd,重新設置密碼,不要再回y,要回復n;
2) 可能是~/.vnc/xstartup 配置文件問題,貼出我2個用戶的配置,root用戶的是我修改的,user01是默認的,但是2個都能正常運行。

[root@ana53 .vnc]# cat xstartup 
#!/bin/sh
#unset SESSION_MANAGER
#unset DBUS_SESSION_BUS_ADDRESS
#exec /etc/X11/xinit/xinitrc
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session &
[user01@ana53 .vnc]$ cat xstartup 
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc

4.3把vncserver做成系統服務,這樣比較方便,固定端口號n,而且可以設置開機自啟,要有sudo權限才能關閉。

注意,復制vncserver@.service的時候,必須改為vncserver@:n.service,n表示第幾個vncserver,默認從1開始,記得必須要冒號,否則會服務是起不來的:

1) 復制系統服務,并重命名

如此案例中我的user01用戶開的vncserver 的display窗口是第3號,所以我要把這個vncserver做成系統服務,就復制一個vncserver@:3.service到/etc/systemd/system 目錄下,這個根據每個人的具體情況而定,當然,可以運行vncserver :n 來指定要起第幾號窗口:

[root@ana53 .vnc]# cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:3.service

2)修改復制后的系統服務里面的<USER>為你想要通過vnc登陸的用戶,注意要把尖括號去掉了

注意PIDFile=/home/<USER> 這里,如果是root用戶,應該把/home去掉,因為root用戶的home目錄不是在/home下,而是在/根目錄下。

[root@ana53 .vnc]# vim /etc/systemd/system/vncserver@:4.service  
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target[Service]
Type=forking# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]
WantedBy=multi-user.target

修改后:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target[Service]
Type=forking# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l user01 -c "/usr/bin/vncserver %i"
PIDFile=/home/user01/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'[Install]
WantedBy=multi-user.target

3) 重載系統服務,修改了服務文件,必須重載才能生效:

[root@ana53 .vnc]# systemctl daemon-reload 

4) 啟動該vncserver,并設為開機自啟:

[root@ana53 .vnc]# systemctl status vncserver@:4.service
● vncserver@:4.service - Remote desktop service (VNC)Loaded: loaded (/etc/systemd/system/vncserver@:4.service; disabled; vendor preset: disabled)Active: active (running) since 二 2018-08-14 10:27:21 CST; 9min agoMain PID: 9930 (Xvnc)CGroup: /system.slice/system-vncserver.slice/vncserver@:4.service? 9930 /usr/bin/Xvnc :4 -auth /home/user01/.Xauthority -desktop ana53:4 (user01) -fp catalogue:/etc/X11/fontpath.d -geometry 102...8月 14 10:27:17 ana53 systemd[1]: Starting Remote desktop service (VNC)...
8月 14 10:27:21 ana53 systemd[1]: Started Remote desktop service (VNC).[root@ana53 .vnc]# systemctl enable vncserver@:4.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:4.service to /etc/systemd/system/vncserver@:4.service.

5) 關閉vncserver

方法一:使用vncserver -kill :n 命令,注意,kill后面有一個空格。這個命令只能kill 掉自己的vncserver,因為他是去/home/$user/.vnc/去找pid的:
[user01@ana53 .vnc]$ ps -ef|grep vnc
user1     1750     1  0 09:54 pts/4    00:00:00 /usr/bin/Xvnc :2 -auth /home/user1/.Xauthority -desktop ana53:2 (user1) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user1/.vnc/passwd -rfbport 5902 -rfbwait 30000
root      3623     1  0 10:00 ?        00:00:00 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000
user01   18521     1  1 11:02 ?        00:00:00 /usr/bin/Xvnc :4 -auth /home/user01/.Xauthority -desktop ana53:4 (user01) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user01/.vnc/passwd -rfbport 5904 -rfbwait 30000
user01   19146  2268  0 11:03 pts/2    00:00:00 grep --color=auto vnc
[user01@ana53 .vnc]$ vncserver -kill :2Can't find file /home/user01/.vnc/ana53:2.pid
You'll have to kill the Xvnc process manually[user01@ana53 .vnc]$ vncserver -kill :4
Killing Xvnc process ID 18521
[user01@ana53 .vnc]$ ps -ef|grep vnc
user1     1750     1  0 09:54 pts/4    00:00:00 /usr/bin/Xvnc :2 -auth /home/user1/.Xauthority -desktop ana53:2 (user1) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /home/user1/.vnc/passwd -rfbport 5902 -rfbwait 30000
root      3623     1  0 10:00 ?        00:00:00 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000
user01   19302  2268  0 11:03 pts/2    00:00:00 grep --color=auto vnc
方法二:使用systemctl 命令,前提user01有sudo 權限:
[user01@ana53 .vnc]$ sudo systemctl stop vncserver@:2.service
[sudo] password for user01: 
[user01@ana53 .vnc]$ sudo systemctl stop vncserver@:4.service
[user01@ana53 .vnc]$ ps -ef|grep vnc
root      3623     1  0 10:00 ?        00:00:00 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -pn -rfbauth /root/.vnc/passwd -rfbport 5901 -rfbwait 30000
user01   20152  2268  0 11:06 pts/2    00:00:00 grep --color=auto vnc
之前一直起不來服務,原來寫錯了,少了個冒號:
[root@ana53 system]# systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)Active: active (running) since 二 2018-08-14 09:26:00 CST; 2s agoProcess: 28940 ExecStart=/usr/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=0/SUCCESS)Process: 28938 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)Main PID: 28972 (Xvnc)CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service? 28972 /usr/bin/Xvnc :1 -auth /root/.Xauthority -desktop ana53:1 (root) -fp catalogue:/etc/X11/fontpath.d -geometry 1024x768 -p...8月 14 09:25:57 ana53 systemd[1]: Starting Remote desktop service (VNC)...
8月 14 09:26:00 ana53 systemd[1]: Started Remote desktop service (VNC).
[root@ana53 system]# systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; disabled; vendor preset: disabled)Active: failed (Result: exit-code) since 二 2018-08-14 09:24:20 CST; 2min 1s agoProcess: 28767 ExecStart=/usr/sbin/runuser -l <USER> -c /usr/bin/vncserver %i (code=exited, status=1/FAILURE)Process: 28763 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)8月 14 09:24:20 ana53 systemd[1]: Starting Remote desktop service (VNC)...
8月 14 09:24:20 ana53 runuser[28767]: runuser: user <USER> does not exist
8月 14 09:24:20 ana53 systemd[1]: vncserver@1.service: control process exited, code=exited status=1
8月 14 09:24:20 ana53 systemd[1]: Failed to start Remote desktop service (VNC).
8月 14 09:24:20 ana53 systemd[1]: Unit vncserver@1.service entered failed state.
8月 14 09:24:20 ana53 systemd[1]: vncserver@1.service failed.

轉載于:https://www.cnblogs.com/xiaozhuangAna/p/9472741.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282449.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282449.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282449.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL Server CONVERT() 日期轉換為新數據類型的 通用函數

http://www.w3school.com.cn/sql/func_convert.asp轉載于:https://www.cnblogs.com/renzhituteng/p/6665569.html

在URL中實現簡易的WebAPI驗簽

本文主要介紹一種與微信公眾平臺對接方式類似的&#xff0c;為 AspNetCore 提供的一種簡易的 WebAPI 簽名驗證中間件。本文相關源碼和案例已開源&#xff0c;地址&#xff1a;https://github.com/sangyuxiaowu/SignAuthorization原理說明簡易的 API url 簽名驗證中間件&#xf…

Redis -- Hash(哈希) [3]

Redis Hash 是一個string類型的field和value的 映射表 &#xff0c;hash特別適合用于存儲對象。 注 : Redis 中每個 hash 可以存儲 232 - 1 鍵值對&#xff08;40多億&#xff09;。 比如這樣:注:在此,首先推薦一款redis可視化工具 https://redisdesktop.com/download , 是非常…

HBuilder 打包流程

1.運行HBuilder---百度搜索HBuilder&#xff0c;官網下載安裝包&#xff0c;解壓&#xff0c;運行HBuilder.exe。注冊賬號&#xff0c;并登陸 2.新建app---在左邊右鍵&#xff0c;選擇新建APP&#xff0c;或者&#xff0c;點擊中間的新建app 3.在彈出的窗口&#xff0c;填入應用…

pandas所占內存釋放

df pd.read_csv(....) 要調用循環處理多個文件時&#xff0c;內存占用情況嚴重&#xff0c;如果互相之間不需要調用&#xff0c;可以直接del df 釋放內存

Python3——字典

Python 字典(Dictionary) 字典是另一種可變容器模型&#xff0c;且可存儲任意類型對象。 字典的每個鍵值(key>value)對用冒號(:)分割&#xff0c;每個對之間用逗號(,)分割&#xff0c;整個字典包括在花括號({})中 定義字典 d {} d {key1 : value1, key2 : value2 } d di…

科技以換皮為本:路遙工具箱 V4 版本發布

作為定位“開發輔助”的工具&#xff0c;我也一直在想如何讓工具更有效率。是更快的打開速度還是更豐富的功能&#xff1f;路遙工具箱 V3 版本的界面布局是偏 BS 后臺系統的風格&#xff1a;可折疊的樹形菜單用來拓寬用戶的操作區域&#xff0c;多標簽的功能布局讓軟件保持整潔…

myisam數據表根據frm文件恢復數據表

有時,我們重裝mysql時,可能忘記備份數據了, 只留下了之前的mysql下面的data文件夾里的數據, 這時我們應該如何去恢復數據表呢 如果直接將原來的data目錄導進現在的mysql,肯定是不行的,其實很簡單 我們常用的數據表結構有myisam和innodb,這兩種數據表恢復數據的方式是不一樣的,這…

本文主要總結關于mysql的優化(將會持續更新)

2019獨角獸企業重金招聘Python工程師標準>>> ON DUPLICATE KEY UPDATE 事件背景 在閱讀公司原來代碼的過程中&#xff0c;我發現了這樣一段代碼: $sql "INSERT INTO {$table} ({$fields}) VALUES " . $values; if (!empty($onDuplicate)) {$sql . ON DU…

CS Academy Gcd Rebuild

題目鏈接&#xff1a;https://csacademy.com/contest/archive/task/gcd-rebuild/statement/ 題目大意&#xff1a;給出一個N*M的矩陣&#xff0c;其中第i行j列表示gcd(a[i], b[j])&#xff0c;現在不知道數組a&#xff0c;b&#xff0c;給出這個矩陣&#xff0c;求a&#xff0c…

ASP.NET Core 在 IIS 下的兩種部署模式

KestrelServer最大的優勢體現在它的跨平臺的能力&#xff0c;如果ASP.NET CORE應用只需要部署在Windows環境下&#xff0c;IIS也是不錯的選擇。ASP.NET CORE應用針對IIS具有兩種部署模式&#xff0c;它們都依賴于一個IIS針對ASP.NET CORE Core的擴展模塊。一、ASP.NET CORE Cor…

navicat連接遠程mysql

環境介紹: 這里,我連接的是阿里云的服務器,自己搭的環境,用的是mysql 5.7一 首先第一步,需要進入遠程服務器的mysql,更改host訪問權限 然后,將root允許訪問的host 改為%(任何ip地址都可以訪問) 注: 原來是只允許本地訪問二 本地用navicat連接遠程mysql 1. 常規部分填寫2. SSH部…

2018-08-15期 HBase命令行使用案例

1、進入hbase命令行[roothadoop-server01 bin]# hbase shell2、命令行幫助COMMAND GROUPS:Group name: generalCommands: status, table_help, version, whoamiGroup name: ddlCommands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, dro…

面向對象五大設計原則

最近在看七牛云許式偉的架構課, 重溫了面向對象五大設計原則(SOLID)&#xff0c;扣理論文字找出處。&#xff08;當然許老板是不可能深聊這么低級的內容&#xff0c;&#x1f921;&#xff09;注意區分設計原則和設計模式。設計原則更為抽象和泛化&#xff1b;設計模式也是抽象…

python函數式編程-匿名函數

>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81] 關鍵字lambda表示匿名函數&#xff0c;冒號前面的x表示函數參數。 匿名函數有個限制&#xff0c;就是只能有一個表達式&#xff0c;不用寫return&#xff0c;返回值就是該表…

bean初始化、注銷

關于在spring 容器初始化 bean 和銷毀前所做的操作定義方式有三種&#xff1a; 第一種&#xff1a;通過PostConstruct 和 PreDestroy 方法 實現初始化和銷毀bean之前進行的操作 第二種是&#xff1a;通過 在xml中定義init-method 和 destory-method方法 第三種是&#xff1a;…

谷歌F12調試公眾號時,讓鼠標顯示出來

yi 環境介紹: win10 , 谷歌瀏覽器yii 概述: 在項目中,需要調試公眾號,本地環境搭好之后,在谷歌瀏覽時,發現移動到公眾號區域,鼠標居然不見了,這讓我怎么操作?各種操作可謂是日了狗了,非常麻煩yiii 調試時鼠標不見的解決辦法: 網上各種說法眾說紛紜,這里,我給出本人認為最恰當簡…

利用bootstrap插件設置時間

$("#"id_rand" .shijian-input").each(function () { $(this).datetimepicker({ lang:"ch", //語言選擇中文 注&#xff1a;舊版本 新版方法&#xff1a;$.datetimepicker.setLocale(ch); format: "hh : ii", /…

C# 編寫的 64位操作系統 -MOOS

MOOSMOOS ( My Own Operating System )是一個使用.NET Native AOT技術編譯的C# 64位操作系統。項目地址&#xff1a;https://github.com/nifanfa/MOOS編譯關于編譯MOOS的信息&#xff0c;請閱讀 編譯維基頁面&#xff1a;https://github.com/nifanfa/MOOS/wiki/。編譯要求VMwar…

js獲取屏幕寬高和下拉加載更多

document.body.clientWidth > BODY對象寬度 document.body.clientHeight > BODY對象高度 document.documentElement.clientWidth > 可見區域寬度 document.documentElement.clientHeight > 可見區域高度 網頁可見區域寬&#xff1a; document.body.clientWid…