😺
VNCより高速な Remote Desktop (NoMachine NX)を使う
背景
リモートデスクトップを利用する祭、VNCよりも高速な NoMachineを使うとよい、という話題がSpeeding up macOS screen sharing? に出ていたので試してみた。以下のサイトが大変よくまとまっていた。
以下、リモートデスクトップ(接続先のホスト)を nxserver、クライアント側のホストを client と表記。
実行環境
- MacBook Pro (Retina, 15-inch, Mid 2012) (
nxserver) - MacBook Pro (13-inch, M1, 2020) (
client) - macOS Monterey (12.4)
下準備
client から nxserver に ssh login ができることを確認しておく
インストール & 設定
macOS での実行例を示しているが、Linux (Debian等)でも後述するserver.cfgのパスが異なるだけでほぼ同じ設定でいける(クライアントはまったく同じ設定でOK)。
-
NoMachine.dmg を展開して
nxserver,clientに install -
nxserverで NoMachine を起動し、設定を開く。[Security]の項目を以下の様に設定。
-
clientで NoMachine を起動し、[Settings] を押し、以下の変更を行う- [Status] の Share the desktop at server startup のチェックを外す
- [Ports] の Start the automatic services at startup のチェックを外す
- [Ports] の Advertise this computer on the local network のチェックを外す
- 左上の [<] ボタンを押し一つ前に戻り、
- [Player] → Input → Grab the keyboard input をON (Command-W で connection close しないようにするため必須)
- [Status] の Share the desktop at server startup のチェックを外す
-
clientの NoMachine で [<] ボタンを押し続けトップに戻り、 [+ Add] を押して以下のプロファイルを作成- Name: nxserver
- Address: 127.0.0.1
- Port: 14000
- Portocol: NX
- [Configuration] の Use password authentication を選択
- [Configuration] の Use UDB communication for multimedia data のチェックを外す
- 左上の [<] ボタンを押しトップに戻る
-
clientの~/.ssh/configに以下を記述~/.ssh/configHost nxserver HostName 192.168.1.1 # nxserverのIPアドレス or FQDN を記述 LocalForward 14000 127.0.0.1:4000 -
clientからnxserverに ssh login ができることを確認client% ssh nxserver Password: # パスワードを入力(公開鍵認証でももちろんOK) nxserver% exit # 動作確認が完了したので logout しておく
使い方
client% ssh nxserver # nxserver に ssh login
nxserver% # このシェルはそのままにしておく(logoutしない)
ここまでできたら client 側の NoMachine で作成した(上記手順4) nxserver アイコンをダブルクリックして nxserver に接続。ユーザ名とパスワードを聞かれるので入力すれば、nxserver のリモートデスクトップが表示される。macOS標準のVNC(Finderから呼び出す vnc://... )と比べると爆速。
リモートデスクトップを使い終わったら client 側の NoMachine.app を終了し、上記手順6で ssh login していた nxserver から logout。
ssh 公開鍵のみの認証に変更
RSAにしか対応していないが、nxserver への接続を ssh 公開鍵のみの認証に変更できるのでやっておいた。具体的な手順は How to set up key based authentication with NX protocol の記述に従えばよいだけ。
サーバ側(nxserver)での設定
-
nxserverにて以下を実行し、設定ファイルを用意nxserver% mkdir -p ~/.nx/config nxserver% touch ~/.nx/config/authorized.crt nxserver% chmod 0600 ~/.nx/config/authorized.crt -
nxserverにclientの ssh 公開鍵を追加nxserver% vim ~/.nx/config/authorized.crt ## client の ssh 公開鍵(client:~/.ssh/id_rsa.pub の中身)をペースト - パスワード認証を無効にする
nxserver% sudo vim /Applications/NoMachine.app/Contents/Frameworks/etc/server.cfg ## AcceptedAuthenticationMethods の行を以下のように変更 AcceptedAuthenticationMethods NX-private-key - NoMachine(NXサーバ) を再起動
nxserver% sudo /etc/NX/nxserver --restart
クライアント側(client)の設定
-
clientのNoMachine.appを起動-
nxserverアイコンを右クリック -> [Edit connection] - [Configuration] -> [Use key-based authentication with a key you provide] を選択
- [Modify] をクリックして、client の秘密鍵のパス (
~/.ssh/id_rsa) を登録し、左上の [<] ボタンを2回押し、トップに戻る
-
-
nxserverアイコンをダブルクリックし、公開鍵認証で接続できることを確認 - 上記手順5 を実行しないと、
clientのNoMachine.appで接続が蹴られる(パスワード認証が無効になっている)ことも確認
Discussion