[Linux] Windows 和 Linux 遠端桌面連線
[Linux] Win 10 和 CentOS 7 遠端桌面連線
Win 10 遠端連線 CentOS 7
1 通過 ssh 連線命令列介面
- 在 CentOS 7 中安裝 ssh 服務
- 在 Win 10 中使用 PuTTY 來通過 ssh 遠端連線 CentOS 7 的命令列介面。
2 通過 vnc 連線圖形介面
2.1 CentOS 7 配置 vncserver
在 CentOS 7 中安裝
tigervnc
和tigervnc-server
:yum install -y tigervnc tigervnc-server
將
/lib/systemd/system/
複製為/etc/systemd/system/[email protected]:1.service
,cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:\1.service
新檔案的
:1
表示將配置 vnc 埠號為 1 的 vnc server desktop,使遠端使用者可以通過X.X.X.X:1
來登入本機圖形介面,其中X.X.X.X
為本機 IP 地址,可以通過改變數字 i 來配置多個[email protected]:i.service
該配置檔案的註釋中有如何快速開始的教程:
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/[email protected]
# 2. Replace <USER> with the actual user name and edit vncserver
# parameters appropriately
# (“User=<USER>” and “/home/<USER>/.vnc/%H%i.pid”)
# 3. Runsystemctl daemon-reload
# 4. Runsystemctl enable [email protected]:<display>.service
進入
/etc/systemd/system/
目錄,修改[email protected]:1.service
檔案的配置,上面的註釋只說將<USER>
替換為合適的使用者名稱,並設定相應的正確引數。但是我在實際配置過程中因為這裡配置不對,會造成 vnc server 啟動失敗,遠端連線失敗等各種問題。最後,經過多次嘗試以及參考網上部落格,我對本檔案做出如下修改可以達到基本正確的效果:原檔案需修改內容:
[Service]
Type=forking
User=<USER># Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i針對 root 修改內容
[Service]
Type=simple
User=root
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/bin/sh -c ‘/usr/bin/vncserver %i’
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’針對 普通使用者(如tong) 修改內容
[Service]
Type=simple
User=tong# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
ExecStart=/bin/sh -c ‘/usr/bin/vncserver %i’
PIDFile=/home/tong/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’需要注意的是,原
[email protected]:1.service
檔案裡有一行Type=forking
,需要將其改成Type=simple
,否則啟動 vncserver 服務會失敗。執行下列命令,重新載入服務,並將 [email protected]:1.service 服務新增到開機啟動:
systemctl daemon-reload systemctl enable [email protected]:1.service
開啟 [email protected]:1.service 服務:
systemctl start [email protected]:1.service
重啟 [email protected]:1.service 服務:
systemctl restart [email protected]:1.service
配置防火牆允許 vnc-server 服務:
firewall-cmd --permanent --add-service=vnc-server firewall-cmd --reload
某一使用者身份(比如 root)下可以通過
vncpasswd
設定該使用者在 vnc server 上的密碼。
正常情況下,以上步驟完成後,本機所配置的 :1 埠的 vncserver 服務將會正常執行啟動(包括每次重開機後),遠端使用者可以通過 X.X.X.X:1
以 root 使用者身份,使用相應的 vnc 密碼來登入本機的圖形介面。
2.2 CentOS 7 vncserver 其他命令
如果某一身份的使用者之前沒有設定過密碼,那麼在第一次執行
vncserver
命令時,會要求輸入密碼:[[email protected] system]# vncserver
You will require a password to access your desktops.
Password:
在輸入密碼後,vncserver 會自動建立該使用者身份的新的 vnc server desktop(新 vnc 埠),及相關配置檔案:
New ‘localhost.localdomain:1 (root)’ desktop is localhost.localdomain:1
Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log再次在相同使用者下執行
vncserver
,不用再輸入密碼,並自動建立新的 vnc desktop(新 vnc 埠)。[[email protected] ~]# vncserver
New ‘localhost.localdomain:3 (root)’ desktop is localhost.localdomain:3
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:3.log通過
vncserver -list
命令可以檢視當前使用者下有效的 vnc 埠:[[email protected] ~]# vncserver -list
TigerVNC server sessions:
X DISPLAY # PROCESS ID
:1 8338
:3 10160vnc 埠號並不是實際的網路埠,而是從 1 開始遞增的邏輯埠號,在客戶端通過 vnc server 的 IP 地址以及該邏輯 vnc 埠號連線相應的 vnc server desktop 圖形介面。
通過
vncserver -kill :i
命令可以刪除 vnc 埠號為 i 的 vnc server desktop。這裡需要注意的一點是,有時執行
vncserver
時會出現一下警告:[[email protected] .X11-unix]# vncserver
Warning: wayne.buptlab:4 is taken because of /tmp/.X11-unix/X4
Remove this file if there is no X server wayne.buptlab:4New ‘wayne.buptlab:5 (root)’ desktop is wayne.buptlab:5
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/wayne.buptlab:5.log這個警告表示在 /tmp/.X11-unix/ 下已經存在 X4 檔案,這個檔案表示之前存在過 vnc 埠號為 4 的 vnc server desktop,但可能是由於不正常關閉等原因使得這個埠號發生了異常,vnc server 無法再使用該埠號。
雖然
vncserver
命令會自動建立新埠,但是這一警告對於配置 [email protected]:i.service 服務卻有嚴重影響,比如我希望配置[email protected]:3.service
服務,希望遠端使用者可以通過X.X.X.X:3
來登入本機,但如果因為異常原因/tmp/.X11-unix/
下已經存在X3
,那麼[email protected]:3.service
服務在將無法正常啟動執行(包括重啟開機後),無法自動建立 vnc 埠號為 3 的 vnc server desktop。目前我找到的解決方法也簡單粗暴,那就是刪除
/tmp/.X11-unix/
下的異常Xi
檔案(甚至直接全部刪除以可以,下次重啟開機時[email protected]:i.service
會重新新建對應埠號的Xi
檔案。
2.3 Win 10 遠端登入 CentOS 7
- win 10 使用 VNC Viewer 軟體,輸入有效的 vnc server 地址(X.X.X.X:1),便可以登入相應 IP 地址(X.X.X.X)和 vnc 埠(:1)的遠端 CentOS 7 主機。
CentOS 7 遠端連線 Win 10 Pro
CentOS 7 安裝 rdesktop 和 tsclient,其中rdesktop是基於命令列的工具,tsclient只是一個圖形化的介面,依賴於rdesktop:
yum install -y rdesktop yum install tsclient
Win10 Pro 在 “我的電腦->屬性->遠端” 中配置“遠端桌面”,啟用“允許遠端連線到此計算機”,並取消勾選“僅允許執行使用網路級別身份驗證的遠端桌面的計算機連線”(若不取消勾選 rdesktop 將不能遠端連線 Win 10)。
CentOS 命令列可以使用以下命令遠端連線 Win 10:
rdesktop -f -a 16 X.X.X.X
- 需要注意的問題是 Win 10 家庭版沒有遠端桌面的功能。而我的電腦正好是 Win 10 家庭版,導致了我的電腦始終不能被遠端桌面連線。所以如果想讓自己的電腦能夠被遠端桌面連線,請使用 Win 10 專業版。
參考資料
CenOS 配置 vncserver(好):
Windows 遠端連線 CentOS:
警告 /tmp/.X11-unix/Xi :
CentOS遠端連線 Windows:
Windows 和 CentOS 互相遠端桌面:
比較 Windows 版本功能: