VNCサーバ設定と接続手順
ヘッドレス運用の開発マシンをセットアップするとき、VNCサーバの設定方法をよく忘れるのでメモ。
VNCサーバ設定
- OS: Ubuntu Server 18.04
-
環境のインストール
$ sudo apt update $ sudo apt install xfce4 xfce4-goodies tightvncserver firefox
-
VNC接続パスワードの設定
パスワードは9文字以上だと$ vncpasswd Using password file /home/<ユーザ名>/.vnc/passwd VNC directory /home/<ユーザ名>/.vnc does not exist, creating. Password: Verify: Would you like to enter a view-only password (y/n)? n
Warning: password truncated to the length of 8.
と表示されて8文字に短縮されるので注意。 -
VNCサーバを起動
サーバは初回起動時にホームディレクトリ内で$ vncserver xauth: file /home/<ユーザ名>/.Xauthority does not exist New 'X' desktop is <ホスト名>:<ディスプレイ番号> Creating default startup script /home/<ユーザ名>/.vnc/xstartup Starting applications specified in /home/<ユーザ名>/.vnc/xstartup Log file is /home/<ユーザ名>/.vnc/<ホスト名>:<ディスプレイ番号>.log
.vnc
や.Xauthority
などのファイルを生成する。 他にVNCサーバを起動しているユーザがいなければ、ディスプレイ番号は1になる。 自分または他のユーザが特にディスプレイ番号を指定せずVNCサーバを起動していくと2, 3…と順番にディスプレイ番号が増える。 -
設定ファイルを編集する
で一度VNCサーバを閉じて$ vncserver -kill :<ディスプレイ番号>
~/.vnc/xstartup
を次のように編集する(そのままだとアイコンが表示されなかったりする)。再度VNCサーバを起動する。#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
$ vncserver
- 運用方法
OSを再起動したときユーザはvncserver
コマンドを叩いて再度VNCサーバを起動する必要がある。
画面の解像度と色深度を変更したい場合、以下のようにサーバ起動時に設定する。
$ vncserver -depth 24 -geometry 1920x1080
クライアント接続手順
Ubuntu Desktop 18.04
Remminaというリモートデスクトップクライアントが標準でインストールされているのでこれを使う。
- Remminaを起動する。
- +ボタンを押す
- 次のように各項目を設定する。
Name
:<適当な表示名>
Protocol
:VNC - Virtual Network Computing
Server
:<接続先アドレス>:<ポート番号>
(<ポート番号>=5900+<ディスプレイ番号>)
例 :192.168.1.100:5901
User password
:<vncpasswdで設定したパスワード>
Color depth
:True color (24 bpp)
Quality
:Medium
Save and Connect
を押す。- 接続が確立するとリモート画面が表示される。
次回以降は一覧に表示された項目をダブルクリックすると接続できるようになる。
macOS
OS標準のクライアントを使う。
- Finderを開いて、
メニュー -> 移動 -> サーバへ接続...
を押す。 - サーバアドレスに
vnc://<接続先アドレス>:<ポート番号>/
を入力して接続を押す(<ポート番号>=5900+<ディスプレイ番号>
)。
例 :vnc://192.168.1.100:5901/
- 画面共有が起動してパスワードを聞かれるので、
vncpasswd
で設定したパスワードを入力して接続を押す。 - 接続が確立するとリモート画面が表示される。
Windows
- VNC Viewerをダウンロードしてインストールする。
- VNC Viewerを起動する。
Enter a VNC Server address or search
に<接続先アドレス>:<ポート番号>
を入力して接続を押す(<ポート番号>=5900+<ディスプレイ番号>
)。
例 :192.168.1.100:5901
Unencrypted connection
という警告ウィンドウが出るのでContinue
を押して続行する。- パスワードを聞かれるので、
vncpasswd
で設定したパスワードを入力してOK
を押す。 - 接続が確立するとリモート画面が表示される。
次回以降は一覧に表示された項目をダブルクリックすると接続できるようになる。
初回接続時
初回接続時にWelcome to the first start of the panel
というウィンドウが表示されるのでUse default config
を押して閉じる。
もしWebブラウザ、ターミナルのアイコンを押しても起動しなければ、
Applications -> Settings -> Preferred Applications
を開いて
Internetタブ -> Web Browser
がMozilla Firefox
に、
Utilitiesタブ -> Terminal Emulator
がXfce Terminal
に設定されているか確認する。
セキュリティについて
VNCプロトコルでは映像の転送が暗号化されていないので、そのままだと通信内容から映像を傍受できてしまう。 通信を暗号化するにはSSHのポートフォワーディング機能を使う。
具体的には、クライアントからサーバに対してSSHでログインできる状態で、
$ ssh <ユーザ名>@<接続先アドレス> -L <ポート番号>:localhost:<ポート番号> -f -N
例 :
$ ssh user@192.168.1.100 -L 5901:localhost:5901 -f -N
localhost:<ポート番号>
に接続するとVNC over SSHが実現できる。
VNCクライアントによっては接続時にSSHポートフォワーディングを設定してくれる機能を持つものもある。
例えば、Remminaだと設定画面のSSH Tunnel
タブで
Enable SSH tunnel
にチェックを入れる。SSH Authentication
のUser name
にログインユーザ名を入れる。- パスワード認証なら
Password
にチェック、公開鍵認証ならPublic key(automatic)
にチェックをいれる。
と設定すると、接続するときに自動的にSSHポートフォワーディングを設定してくれる。