VNCでリモートデスクトップ(CentOS-MacOS編)
目次
この記事について
- VNCという仕組みを使って、サーバー(CentOS)のデスクトップ画面をローカル(MacOS)に転送して操作する試みです。
- VirtualGLおよびTurboVNCを使用します。
- 2019年8月30日実施。
実行環境
サーバー
CentOS 7
- 2.3 GHz Intel Xeon W-2195
- 128 GB 2666 MHz DDR4
- NVIDIA GeForce RTX 2080 Ti 11GB x 2
- Driverバージョン 430.40
- CUDAバージョン 10.1
クライアント
macOS Mojave 10.14.6
- Mac mini (Late 2012)
- 2.3 GHz Intel Core i7
- 16 GB 1600 MHz DDR3
- Intel HD Graphics 4000 1536 MB
- XQuartx 2.7.11
クライアントからサーバーへは、踏み台サーバー等を介さず直通で接続できる想定です。
インストール
サーバー側(CentOS)
VirtualGLのインストール
https://sourceforge.net/projects/virtualgl/files/ より、VirtualGLの最新版をダウンロードする。2019年8月30日時点では2.6.2で、CentOS7の場合は VirtualGL-2.6.2.x86_64.rpmである。
インストールは公式ドキュメント https://cdn.rawgit.com/VirtualGL/virtualgl/2.6.2/doc/index.html を参考にする。
今回行った手順を書いておく。すべてのコマンドはrootユーザーとして実行した。まずは
> yum install VirtualGL-2.6.2.x86_64.rpm
次に、
> runlevel
でランレベルを確認し、もし3では無い場合は
> init 3
してランレベル3 (CUIモード)に移行する。どういう必要性があってそうするのかはわからないが公式にそう書いてあるため。
次にVirtualGLの設定を行う。
> /opt/VirtualGL/bin/vglserver_config
色々聞かれるが、私は以下のようにした。
1) Configure server for use with VirtualGL 2) Unconfigure server for use with VirtualGL X) Exit Choose: 1 Restrict 3D X server access to vglusers group (recommended)? [Y/n] n Restrict framebuffer device access to vglusers group (recommended)? [Y/n] n Disable XTEST extension (recommended)? [Y/n] n
以前別の記事で書いたが、vglusers groupへのrestrictをYesにするとだいぶ面倒なことになるので(GPUデバイスの所有グループがroot->vglusersに書き換わり、それが原因で色々起こる)、上記のようにNoにした方が楽。
また、XTESTに関しては公式に"x11vnc and x0vncserver both require XTEST, so if you need to attach a VNC server to the 3D X server, then it is necessary to answer “No” (and thus leave XTEST enabled.)"と書いてある。意味がよくわからないがVNCを使う場合はXTESTをdisableしてはならないと読み取れるので、Disable XTEST extension はNoとした。
上記、セキュリティ上の懸念があるそうなので自己責任で。
VirtualGL単体で気持ちよく使うには他にも設定すべき事項があるが、とりあえず今回は先へ進む。
TurboVNCのインストール
公式 https://cdn.rawgit.com/TurboVNC/turbovnc/2.2.2/doc/index.html#hd004001 に従ってみます。
まず https://sourceforge.net/projects/turbovnc/files/2.2.2/ より、最新版をダウンロードする。2019年8月30日時点では2.2.2が最新。CentOS7の場合は turbovnc-2.2.2.x86_64.rpm である。
> yum install turbovnc-2.2.2.x86_64.rpm
クライアント側(MacOS)
TurboVNC Viewerのインストール
VNCサーバー接続専用のアプリ。https://sourceforge.net/projects/turbovnc/files/2.2.2/ より、TurboVNC-2.2.2.dmg をダウンロード。右クリックメニューから「開く」を選択してdmgを開き、インストーラ TurboVNC.pkg を同様にして起動する。
実行
公式手順 https://cdn.rawgit.com/TurboVNC/turbovnc/2.2.2/doc/index.html#hd004001 の第6.1節に従う。
サーバー(CentOS)側で、以下コマンドによりVNCセッションを立ち上げる。
(CentOS)> /opt/TurboVNC/bin/vncserver
なんか色々聞かれた。
You will require a password to access your desktops. Password: Warning: password truncated to the length of 8. Verify: Would you like to enter a view-only password (y/n)? n Warning: cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:1 is taken because of /tmp/.X11-unix/X1 Remove this file if there is no X server cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:1 Desktop 'TurboVNC: cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:2 (kttn)' started on display cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:2 Creating default startup script /home/people/kttn/.vnc/xstartup.turbovnc Starting applications specified in /home/people/kttn/.vnc/xstartup.turbovnc Log file is /home/people/kttn/.vnc/cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:2.log
パスワードを打てと言われたのでサーバー側のユーザーパスワードを打ったが、8文字に短縮しますと言われた。ユーザーパスワードではなくVNCセッション内で使うパスワードのことかも。
色々メッセージが出ているが、大事なのは多分
Desktop 'TurboVNC: cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:2 (kttn)' started on display cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:2
の部分であろう。コロンの左側はサーバーのホスト名、右側はVNCセッションで使うディスプレイ番号らしい。
次にクライアントのMacOS側で、TurboVNC Viewerを立ち上げる。
Finderで アプリケーション > TurboVNC > TurboVNC Viewer.app をダブルクリックで起動する。
で、ホスト名とディスプレイ番号を入力する。
安永研の場合はDNSが動いているのでFQDN(lan.yasuna...以降も含めたホスト名)ではなく、ホスト名(cs06)だけで十分のはず。
で、Connectボタンを押す。
結果↓
失敗。今度はFQDNをちゃんと入力してみる(cs06.lan.yasunaga-lab.bio.kyutech.ac.jp:2)。
結果↓
さぁ、盛り上がってまいりました。
サーバー側のログファイル ~/.vnc/cs06.lan.yasunaga-lab.bio.kyutech.ac.jp\:2.log を開いてみる。以下一部抜粋
touch: `/home/people/kttn/.cache/imsettings/log' に touch できません: そのようなファイルやディレクトリはありません
試しに予めそのディレクトリを作ってみる。
(CentOS)> mkdir -p .cache/imsettings/log
上記の上で再度ためしてみたけどやはり connection refused。
MacOS側のファイアウォールをoffにして再トライしても connection refused。
一応ホスト名をipアドレスに変えて再トライしてみた。するとしばらくTurboVNC ViewerがCPU 100%で暴走し、その後 Operation timed out みたいな感じで死亡した。
先程サーバー側で作ったディレクトリ、logまでではなくimsettingsまでみたいだったので消す。
(CentOS)> mkdir -r .cache/imsettings/log
その上で再度接続するもconnection refused。
ネット探してたら、サーバー側のanacondaにdbus関係のバイナリがインストールされていて、それがvncserverを混乱させておかしくなっているとの記述が散見された。なのでPATHを強制的に変更。
... 奮闘は続く