😺
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