# Command line 設定 VNC 遠端桌面
###### tags: `setting`
## 前言
最近由於工作需要,我需要遠端連線進行工作。然而,我所需處理的任務常常涉及到圖形操作,並不適合僅使用終端 terminal 文字介面。因此,我決定在遠端安裝 [VNC](https://zh.wikipedia.org/zh-tw/VNC) 伺服器,然後在本地使用 VNC 客戶端 Client 進行連線,以便操作圖形使用者介面 [GUI](https://zh.wikipedia.org/zh-tw/%E5%9B%BE%E5%BD%A2%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2)。
為什麼選擇使用 VNC 呢?因為在我實習的公司中就是使用 VNC 界面進行開發伺服器連線,所以我對其比較熟悉。雖然之前我也使用過 MobaXterm 進行圖形相關的設定(X server),但這種方法仍需要使用很多命令 Command,因此還是決定安裝 VNC 比較實在。
本文主要內容將重點介紹如何在遠端伺服器設置 VNC 以及在本地進行連線的步驟。
## VNC 簡介
VNC 是一種連接系統,允許使用鍵盤和滑鼠與伺服器上的圖形桌面環境進行互動。本篇文將介紹如何使用 [TigereVNC](https://www.tightvnc.com/) 設置 VNC 伺服器,並通過 SSH 安全連接到。
## 在 Ubuntu 上安裝 VNC
一開始先更新所有 packet
```sudo apt update```
再來安裝 [Xfce](https://xfce.org/?lang=zh_TW) packets 因為 Ubuntu 可能還沒有相關的環境
```sudo apt install xfce4 xfce4-goodies```
接著安裝 TigerVNC Server
```sudo apt install tightvncserver```
測試 vncserver 是否安裝成功
```vncserver```
```
Output
You will require a password to access your desktops.
Password:
Verify:
```
出現上述結果代表已經安裝成功,輸入六到八位字數密碼
輸入完密碼後會出現
```
Output
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist
New 'X' desktop is your_hostname:1
Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
```
`:1` 代表顯示埠,預設值從`5900`開始,所以`:1`表示`5901`
如果需要改密碼,輸入指令`vncpasswd`
## 在 Ubuntu 上設置 VNC
如果要關掉特定連接埠可以使用指令
`vncserver -kill :1`
結果會顯示特定 PID 被刪除
```
Output
Killing Xtightvnc process ID 17648
```
進入設定檔中更改預設指令
```
vim ~/.vnc/xstartup
```
貼入以下文字
```#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
```
如果需要設定可以到`.Xresources` 中進行設定
為了保證`vncserver`正常執行,記得將檔案改成可執行模式
`chmod +x ~/.vnc/xstartup
`
接著就可以再次執行 VNC,有特殊需求的話可以加入設定
`vncserver -localhost -geometry 1080x960`
## 在本地端連接 VNC
因為我所使用的遠端電腦需要 VPN 進行連線,所以我先在本地端建立 SSH 的連接通道
`ssh -L 5901:localhost:5901 -N -f <usename>@<ip>`
建立玩通道之後就可以透過 VNC Client 連線,我用習慣的是 [RealVNC](https://www.realvnc.com/en/)
由於前面已經將 SSH 綁在 localhost 上了,用戶端直接在地址區輸入`localhost:5901`就可以進行遠端連線了
