13,009
回編集
81行目: | 81行目: | ||
Raspberry Piには、予め、VNCサーバの機能が組み込まれているので、VNCの機能を有効化することでVNCサーバの機能を利用できる。<br> | Raspberry Piには、予め、VNCサーバの機能が組み込まれているので、VNCの機能を有効化することでVNCサーバの機能を利用できる。<br> | ||
[設定] - [Raspberry Piの設定] - [インターフェイス]タブ - [VNC]項目を[有効]にする。<br> | [設定] - [Raspberry Piの設定] - [インターフェイス]タブ - [VNC]項目を[有効]にする。<br> | ||
<br><br> | |||
== VNCサーバ (Wayland向け)== | |||
==== wayvncのインストール ==== | |||
===== パッケージ管理システムからインストール ===== | |||
# RHEL | |||
sudo dnf install wayvnc | |||
# SUSE | |||
sudo zypper install wayvnc | |||
<br> | |||
===== ソースコードからインストール ===== | |||
wayvncのビルドに必要なライブラリをインストールする。<br> | |||
# RHEL | |||
sudo dnf install meson gcc ninja-build pkg-config egl-wayland egl-wayland-devel \ | |||
mesa-libEGL-devel mesa-libEGL libwayland-egl libglvnd-devel \ | |||
libglvnd-core-devel libglvnd mesa-libGLES-devel mesa-libGLES \ | |||
libxkbcommon-devel libxkbcommon libwayland-client \ | |||
pam-devel pixman-devel libgbm-devel libdrm-devel scdoc \ | |||
libavcodec-free-devel libavfilter-free-devel libavutil-free-devel \ | |||
turbojpeg-devel wayland-devel gnutls-devel jansson-devel | |||
# SUSE | |||
sudo zypper install meson gcc ninja pkg-config scdoc libgnutls-devel pam-devel libglvnd-devel \ | |||
libjpeg-turbo libpixman-1-0-devel libjansson-devel libxkbcommon-devel \ | |||
Mesa-libEGL-devel Mesa-libGLESv1_CM-devel Mesa-libGLESv2-devel Mesa-libGLESv3-devel \ | |||
libdrm-devel libgbm-devel wayland-devel wayland-protocols-devel \ | |||
ffmpeg-4-libavcodec-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavutil-devel | |||
<br> | |||
[https://github.com/any1/wayvnc wayvncのGithub]にアクセスして、ソースコードをダウンロードする。<br> | |||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf wayvnc-<バージョン>.tar.gz | |||
cd wayvnc-<バージョン> | |||
<br> | |||
wayvncをビルドおよびインストールする。<br> | |||
meson build --prefix=<WayVNCのインストールディレクトリ> | |||
ninja -C ./build -j $(nproc) | |||
ninja -C ./build install | |||
<br> | |||
必要ならば、~/.profileファイル等に環境変数<code>PATH</code>を追記する。<br> | |||
vi ~/.profile | |||
<br> | |||
<syntaxhighlight lang="sh"> | |||
# ~/.profileファイル | |||
export PATH="/<wayvncのインストールディレクトリ>/bin:$PATH" | |||
</syntaxhighlight> | |||
<br> | |||
wayvncサーバは、デフォルトではlocalhostからの接続しか受け付けない。<br> | |||
そのため、任意のインターフェースからの接続を受け入れるには、アドレスを0.0.0.0に設定する。<br> | |||
wayvnc 0.0.0.0 | |||
<br> | |||
パブリックネットワークやインターネット上では、ユーザ認証を有効にしないこと。<br> | |||
wayvncの接続を保護する最善の方法は、localhostでリッスンしながらSSHトンネリングを使用することである。<br> | |||
また、wayvncに接続する際にユーザを認証することもできる。<br> | |||
<br> | |||
==== 暗号化と認証 ==== | |||
===== VeNCrypt (TLS) ===== | |||
TLSには、X509秘密鍵と証明書が必要となる。<br> | |||
証明書付きの自己署名鍵は、以下に示すコマンドを実行して生成することができる。<br> | |||
cd ~/.config/wayvnc | |||
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -sha384 \ | |||
-days 3650 -nodes -keyout tls_key.pem -out tls_cert.pem \ | |||
-subj /CN=localhost \ | |||
-addext subjectAltName=DNS:localhost,DNS:localhost,IP:127.0.0.1 | |||
cd - | |||
<br> | |||
上記のコマンドにおいて、localhostと127.0.0.1は、それぞれ公開用のホスト名とIPアドレスに置き換えること。<br> | |||
<br> | |||
次に、認証情報を含む設定ファイル (~/.config/wayvnc/configファイル) を作成する。<br> | |||
または、任意の場所に配置して、wayvncコマンドに<code>-config</code>オプションを付加して設定ファイルを読み込むこともできる。<br> | |||
# ~/.config/wayvnc/configファイル | |||
use_relative_paths=true | |||
address=0.0.0.0 | |||
enable_auth=true | |||
username=<ユーザ名> | |||
password=<パスワード> | |||
private_key_file=tls_key.pem | |||
certificate_file=tls_cert.pem | |||
<br> | |||
==== RSA-AES ==== | |||
RSA-AESセキュリティタイプは、EAXモードでRSAとAESを組み合わせて、盗聴やMITMに強い安全な認証と暗号化を提供する。<br> | |||
<br> | |||
その主な弱点は、最初の使用時にユーザがサーバの認証情報を検証しなければならないことである。<br> | |||
その後、サーバの認証情報が変更された場合、クライアントソフトウェアはユーザに警告する必要がある。<br> | |||
これはSSHで採用されているTOFU (Trust on First Use) スキームである。<br> | |||
<br> | |||
RSA-AESを有効にするには、RSA鍵を生成する必要がある。<br> | |||
ssh-keygen -m pem -f ~/.config/wayvnc/rsa_key.pem -t rsa -N "" | |||
<br> | |||
また、<code>rsa_private_key_file</code>パラメータを設定することにより、このファイルのパスをwayvncに伝える必要がある。<br> | |||
# ~/.config/wayvnc/configファイル | |||
use_relative_paths=true | |||
address=0.0.0.0 | |||
enable_auth=true | |||
username=<ユーザ名> | |||
password=<パスワード> | |||
rsa_private_key_file=rsa_key.pem | |||
<br> | |||
RSAと組み合わせてTLS用の認証情報を追加することもできる。<br> | |||
これは、クライアントが選択する。<br> | |||
<br> | |||
==== wayvncctlコントロールソケット ==== | |||
実行時のインタラクションとコントロールを容易にするため、wayvncは$XDG_RUNTIME_DIR/wayvncctl (または、フォールバックとして/tmp/wayvncctl-$UID) にunixドメインソケットを開く。<br> | |||
クライアントは接続して、実行中のwayvncインスタンスへの問い合わせと制御のためにjsonフォーマットのIPCメッセージを交換することができる。<br> | |||
<br> | |||
コマンドラインからこのコントロールソケットを操作するには、wayvncctlユーティリティを使用する。<br> | |||
<br> | |||
IPCプロトコルと利用可能なコマンドの詳細はwayvnc(1) manページ、コマンドラインインタフェースの詳細はwayvncctl(1) manを参照すること。<br> | |||
<br> | |||
wayvncで様々なイベントが発生した時にコマンドを実行するために使用できる便利なイベントループモードも存在する。<br> | |||
詳細を知りたい場合は、[https://github.com/any1/wayvnc/blob/master/examples/event-watcher examples/event-watcher]を参照すること。<br> | |||
<br><br> | <br><br> | ||