X11vnc

提供: ArchWiki
2017年1月28日 (土) 00:01時点におけるKusakata (トーク | 投稿記録)による版 (同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

x11vnc を使うことで実際の X ディスプレイ (つまり物理モニタに表示されたディスプレイ、キーボード、マウス) を VNC ビューアでリモートに表示・操作することができます。つまり Windows における WinVNC と同じようなことを Unix/X11 で行います。

ノート: x11vnc は X ディスプレイのリモートコントロールをする唯一の手段ではありません。tigervnc には x0vncserver が含まれており同じようなことを行うことができます。

x11vnc のセットアップ

インストール

x11vnc公式リポジトリからインストールできます。

起動

まず、startx を使うか GDMSLiM などのディスプレイマネージャによって X を起動します。headless で動くように X を設定するのも良いでしょう。X を起動したら、ターミナルを開いて次を入力してください:

$ x11vnc -display :0

ログイン時に実行されるスクリプトに x11vnc 行を記述するという方法もあります。

#!/bin/bash
x11vnc -nap -wait 50 -noxdamage -passwd PASSWORD -display :0 -forever -o /var/log/x11vnc.log -bg
ノート: 上記のパスワード "PASSWORD" はセキュアでありません。マシン上で ps を実行できる人は誰でも見てしまうことができます。また、/var/log/x11vnc.log は手動で作成する必要があり、ファイルの所有者は x11vnc を実行するユーザーと一致していなければならないので注意してください。

X authority を設定する

VNC サーバーの X authority ファイルを設定することができます。-auth 引数を使って適切なファイルを指定することで設定でき、ファイルは X サーバーの起動方法によって異なります。一般的に、X authority ファイルを設定するには x11vnc が root で実行されることを必要とします。

X の起動
$ x11vnc -display :0 -auth ~/.Xauthority

このコマンドが失敗する場合、次のコマンドを (root で) 実行してください:

# x11vnc -display :0 -auth /home/user/.Xauthority

user は X サーバーを実行しているユーザーのユーザー名に置き換えてください。

GDM
ノート: 新しい GDM パッケージではデフォルトのディスプレイサーバーバックエンドとして Xwayland が付属しています。以下のコマンドは Xorg を使用している場合にのみ有効です (.Xauthority が作成されないため x11vnc が起動できません)。/etc/gdm/custom.conf#WaylandEnable=false 設定をアンコメントして Xorg の使用を有効にすることを推奨します。
# x11vnc -display :0 -auth /var/lib/gdm/:0.Xauth

新しいバージョンの GDM では /run/user が使われます。ログイン画面で使われるユーザー 120 (gdm) の場合:

# x11vnc -display :0 -auth /run/user/120/gdm/Xauthority

上記のコマンドが上手くいかないときは下のトラブルシューティングセクションを見て下さい。

SLIM
# x11vnc -display :0 -auth /var/run/slim.auth
警告: 上記で設定される VNC はパスワードで保護されません。ネットワークにアクセスできれば誰でも X サーバーを見ることができてしまいます。SSH を使用して VNC 接続をトンネル化するか、下に書かれているようにパスワードを設定してください。
ノート: パスワードによって暗号化されるのはログインプロセスだけです。転送自体は暗号化されません [1]
LXDM
# x11vnc -display :0 -auth /var/run/lxdm/lxdm-\:0.auth

パスワードを設定する

$ mkdir ~/.x11vnc
$ x11vnc -storepasswd password ~/.x11vnc/passwd

保存されたパスワードを使って接続するには、以下のように -rfbauth 引数を使って作成した passwd ファイルを指定して下さい:

$ x11vnc -display :0 -rfbauth ~/.x11vnc/passwd 

接続の際にビューアがパスワードを要求するはずです。

常に動作させる

デフォルトで、x11vnc は最初の VNC セッションを受け付けてセッションが切断させると終了します。 終了しないようにするには、x11vnc に -many または -forever 引数を付けて実行してください、以下のようになります:

$ x11vnc -many -display :0

または

$ x11vnc -forever -display :0

アクセスする

他のコンピュータで VNC クライアントを起動して、x11vnc を実行しているコンピュータの IP アドレスを入力してください。接続すれば、上手くいくはずです。

ネットワークの外から (x11vnc が動作している) VNC サーバー・コンピュータにアクセスするときはポート 5900 が開放されている必要があります。

SSH トンネル

SSH をインストール・設定してください。

x11vnc で -localhost フラグを使ってローカルインターフェイスにバインドしてください。それができれば、SSH を使ってポートをトンネルすることができます。SSH を通して VNC に接続してください。

簡単な例 (http://www.karlrunge.com/x11vnc/index.html#tunnelling より):

$ ssh -t -L 5900:localhost:5900 remote_host 'sudo x11vnc -display :0 -auth /home/USER/.Xauthority'

USER は X サーバーを動かしているユーザーのユーザー名に置き換えてください。

(remote_host の Unix アカウントに現在の場所からログインするにはおそらくパスワード・パスフレーズが必要になります。ここでは remote_host のログインアカウントを持っており SSH サーバーを動かしていることが前提です)

そしてマシンの他のターミナルウィンドウで次のコマンドを実行してください:

$ vncviewer -encodings "copyrect tight zrle hextile" localhost:0

トラブルシューティング

1. こちら のウェブサイトを見ることであなたの ip アドレスと、ポート 5900 が開放されているか確認することができます。

2. GNOME + GDM のみでテスト済み

トンネルが起動できず、XOpenDisplay(":0") failed のようなエラーが表示される場合、~/.Xauthority ディレクトリがあるか確認してください。 ディレクトリが存在しない場合、下のコマンドを実行することで簡単に作成できます (実際はシンボリックリンクです):

$ ln -sv $(dirname $(xauth info | awk '/Authority file/{print $3}')) ~/.Xauthority

それから上のトンネリングの例を試してください、上手く動くはずです。 さらに Xorg が起動するたびに自動的に作成させたい場合、下のように Xprofile ファイルを作成して実行可能にしてください:

$ ln -sf $(dirname $(xauth info | awk '/Authority file/{print $3}')) ~/.Xauthority

3. GNOME 3x11vnc

GNOME 3 と x11vnc を使っていて以下のエラーが表示される場合:

*** XOpenDisplay failed (:0) 

*** x11vnc was unable to open the X DISPLAY: ":0", it cannot continue.

x11vnc を以下のように実行してみてください:

$ x11vnc -noxdamage -many -display :0 -auth /var/run/gdm/$(sudo ls /var/run/gdm | grep $(whoami))/database -forever -bg

他のディスプレイマネージャデスクトップ環境で動いたり動かなかったら更新してください。

4. スクリーンセーバーの問題

スクリーンセーバーが1-2秒で起動してしまう場合、x11vnc を -nodpms キーを付けて起動してください。