2020年 02月 29日
SUSE Linux 15 (openSUSE Leap 15)の vncserver,VNC接続をする。
MovaXterm で Mac の VNC 接続を始めたら、やめられなくてもう一度、 vncserver の事を、復習してみます。
参考ドキュメント
8 VNCによるリモートアクセスhttps://documentation.suse.com/ja-jp/sles/15-SP1/html/SLES-all/cha-vnc.html
tigervnc がインストールされているか。YaST > Software Manegement で確認して、なければチェックしてインストールします。opensuse151:~ # vncserver --helpusage: vncserver [:<number>] [-name <desktop-name>] [-depth <depth>][-geometry <width>x<height>][-pixelformat rgbNNN|bgrNNN][-fp <font-path>][-fg][-autokill][-noxstartup][-xstartup <file>]<Xvnc-options>...vncserver -kill <X-display>vncserver -list上の SLE15 のマニュアルにはこんな簡単な説明がありました。
手順 8.2: vncserverを使用した永続的VNCセッションの開始 REPORT DOCUMENTATION BUG#1. シェルを開き、VNCセッションを所有するユーザとしてログインしていることを確認します。2. VNCセッションで使用されるネットワークインタフェースがファイアウォールで保護されている場合は、ファイアウォール内でセッションによって使用されるポートを手動で開く必要があります。複数のセッションを開始する場合は、一連のポートを開くことができます。ファイアウォールの設定方法の詳細については、Chapter 16, Masquerading and Firewallsを参照してください。vncserverは、ディスプレイ:1にはポート5901、ディスプレイ:2にはポート5902という順序でポートを使用します。永続的セッションの場合、VNCディスプレイとXディスプレイは、通常、同じ番号です。3. 1024x768ピクセルの解像度と16ビットの色数でセッションを開始するには、次のコマンドを入力します。vncserver -alwaysshared -geometry 1024x768 -depth 16vncserverコマンドは、何も指定されない場合、未使用のディスプレイ番号を選択し、その選択内容を出力します。追加オプションについては、man 1 vncserverを参照してください。
opensuse151:~ # vncserver :0You will require a password to access your desktops.Password:12345678Verify:12345678Would you like to enter a view-only password (y/n)? nNew 'opensuse151:0 (root)' desktop is opensuse151:0Creating default startup script /root/.vnc/xstartupCreating default config /root/.vnc/configStarting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/opensuse151:0.logopensuse151:~ #
※ desktop is opensuse151:0の ":0" に注意
※ 因みに SLES11, 以降の XEN/KVN の仮想 HVM を使っている場合、 lib-virt が使っているので vncserver :0 などの低いディスプレー番号は使えないようです。二桁以上のディスプレイ番号を使うと上手く動きました。あるいは、単にディスプレー番号を指定せず vncserver .... を実行すると、最初に空きがある番号に自動的に割り当てられます。
sle15:~ # vncserver :10 <-- 怒られたA VNC server is already running as :10sle15:~ # vncserver :11 <-- 11 番は使えたNew 'corsair:11 (knakaj)' desktop is corsair:11Starting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/corsair:11.logsle15:~ #sle15:~ # vncserver <-- 番号を指定しないで単純起動New 'corsair:6 (root)' desktop is corsair:6 <-- :6 が割り当てられたStarting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/corsair:6.logsle15:~ #
MobaXtermhttps://mobaxterm.mobatek.net
Session > VNC (必要に応じて "network settings" タブで SSH gateway 経由をチェック) で VNC 接続できました。接続を切ります。
opensuse151:~ # ps ax | grep vnc*14306 pts/0 Sl 0:01 /usr/bin/Xvnc :0 -auth /root/.Xauthority -desktop opensuse151:0 (root) -fp /usr/share/fonts/misc,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/Type1 -geometry 1024x768 -pn -rfbauth /root/.vn /passwd -rfbport 5900 -rfbwait 3000015198 pts/0 S+ 0:00 grep --color=auto vnc*opensuse151:~ #opensuse151:~ # vncserver -kill :0Killing Xvnc process ID 14306opensuse151:~ #
Finder > 移動 > サーバーに接続 > URL に
vnc://IP_Address:590n
(n は vncserver を立ち上げた時に指定した :0 のディスプレイ番号のパラメータ)
デフォルトでは 5900 番台のポートが使われるので、いたずら対策にこのポートを変えておく事です。/usr/bin/vncserver スクリプトの
$vncPort = 5900 + $displayNumber;
の行を任意の違うポートに変えておくと良い。あるいは "vncserver :1000" の様に、一桁多いディスプレイ番号を割り当てる。
- ファイアウォール
ファイアウォールはポート 5900 から開けておくこと。勿論、 vncserver のポートを変えた場合ほそのポートを開ける事になります。
接続するパスワードは vncpasswd コマンドで変更され。 ~: .vnc に保管される。もし動作が妖しければ、このディレクトリの中を削除すればリセットされる。vnc パスワードは最長8バイトであり脆弱である事に注意します。頻繁に変えるか、使う予定がなければ vncserver を立ち上げっぱなしにしない事をお勧めします。(そういう時に使いたくなるんですけど....)
opensuse151:~/.vnc # vncpasswdPassword:Verify:Would you like to enter a view-only password (y/n)? nopensuse151:~/.vnc # ls -ltotal 64-rw-r--r-- 1 root root 332 Feb 27 14:56 config-rw------- 1 root root 8 Feb 28 13:24 passwd-rwxr-xr-x 1 root root 639 Feb 27 14:56 xstartup-rw-r--r-- 1 root root 34652 Feb 28 11:12 opensuse151:0.log-rw-r--r-- 1 root root 6 Feb 28 11:09 opensuse151:0.pid-rw-r--r-- 1 root root 8788 Feb 27 18:10 opensuse151:1.log
vnc プロトコルは、telnet 同様、暗号化されない平文通信なので、デリケートなケースでは安易に使わない事。 SSH によるポート転送との組み合わせを勧めます。少なくとも MovaXterm には VNC 接続の中に SSH ゲートウェイの設定があるのは単純にすごい。Mac の ”画面共有” は暗号化されないので注意。SSH トンネリングする方法があるので "mac vnc ssh トンネル" などで検索してください。
一つしかないモニタに複数のホストを扱う事は、システム管理にとっては便利な機能です。しかし、vncserver を改めて研究してみると、そこには大きな脆弱性や欠陥が見えてきました。便利な反面、セキュリティホールでもあるんですね。今回は Windows の RDP については説明はしませんが、やっぱり RDP 接続も脆弱性があるので、何だかなぁ、という気分です。事業所内のプライベートネットワークであればまだしも、「働き方改革」なんかで、自宅からリモート接続したい、などの要求は高まるばかり。利便さと脆弱性との両立って難しいのです。ますますインフラ系の技術者にとっては厳しい要求があるのですね。