はじめに
SSH経由でTigerVNCのx0vncserverを起動し、リモートからホストの物理ディスプレイを共有する方法を紹介する。通常のVNCサーバ(Xvnc)とは異なり、x0vncserverは既存のデスクトップ環境(物理ディスプレイ)をそのまま共有できる点が特徴である。
動作確認環境
- Ubuntu Desktop 22.04 x86_64
前提条件
- GUIユーザとしてログインしておく
方法
事前準備
SSH経由で対象PCにログインして以下の設定を行う。
GUIユーザとしてログインする。自動ログインさせておくには筆者の以下の記事を参照。
Xhostの設定
SSH経由で、ホストの物理ディスプレイにアクセスするために以下を実行する。
以下の理由からGUIユーザとしてログインしている必要がある。
- x0vncserverは既存のXセッションに接続するため
- ログインしていないとDISPLAYが存在しない
sudo -u {username} DISPLAY=:0 XAUTHORITY=/home/{username}/.Xauthority xhost +local:root
- {username}: ログイン先のユーザ名
現在のログインユーザの場合は以下を実行する。
sudo -u $USER DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority xhost +local:root
以下のメッセージが出れば成功。
non-network local connections being added to access control list
注意1
- GUIユーザでログインしている必要がある
-
ログインしていないと以下のエラーとなる
Authorization required, but no authorization protocol specified xhost: unable to open display ":0"
-
注意2
xhost +local:root はローカルのrootユーザにXアクセスを許可するため、
セキュリティ的には緩い設定です。不要になったら以下で戻すことを推奨します。
xhost -local:root
TigerVNC (x0vncserver)のインストール
インストールパッケージ(.debファイル)のダウンロード
公式サイトのダウンロードページから、対応したdebをダウンロードする。
- v1.16.2の場合
ダウンロードしたインストールパッケージ(.debファイル)をCLIでインストールする場合は以下を実行する。
sudo apt install ./tigervncserver_1.16.2-1ubuntu1_amd64.deb
VNCパスワードの設定
vncpasswd
- view onlyパスワードは、
nとする。パスワードの文字数は、6文字以上8文字以下とすること
TigerVNCのx0vncserverの起動
TigerVNCのx0vncserverを起動する。バージョンv1.12以降で引数が変わったので注意する。
TigerVNC v1.12以降の場合
x0vncserver -display :0 -PasswordFile ~/.vnc/passwd
- -display
- ホストのディスプレイ番号(通常は:0)
- -PasswordFile
- VNCパスワードファイル
TigerVNC v1.11以前の場合
x0vncserver -display :0 -passwordfile ~/.vnc/passwd
【オプション】スクリプト化
スクリプト化したい場合は、~/bin/start_x0vncserver.shなどに以下の内容を保存する。
#!/bin/bash
x0vncserver -display :0 -PasswordFile ~/.vnc/passwd
exit 0
動作確認
VNCのViewerソフトを利用して対象PCに接続する。Windowsの場合は、UltraVNC Viewerを推奨。VNCのデフォルトポートは 5900(ディスプレイ番号 :0 の場合)である。変更していない場合は以下のアドレスにアクセスして、設定したパスワードを入力して接続確認する。
{IPアドレス}:5900
まとめ
SSH経由でTigerVNCのx0vncserverを起動する方法を紹介した。SSH経由で画面転送したい場合に有用である。
参考
