FreeNXが動作するようになって、非常に高速なリモートデスクトップ環境ができたのですが、SSHのログイン認証をパスワード認証に戻さざるを得なくなってしまいました。
が、それはなるべく避けたいもの。
そこでいろいろしらべていくと、いくつかのことがわかってきました。
- NX Clientの設定で秘密鍵が登録されているのはなぜ?
- 秘密鍵があるということは、組になる公開鍵があるはずです。しかし、そんなものをサーバ側に置いた記憶はありません。
- どうやらデフォルトの秘密鍵/公開鍵ペアをもっていて、NX Serverと共有しているみたい。これは置き換え可能なようです。
ということで、鍵を作り直して、設定しなおします。
- ログイン用鍵ペアを作り直します。
- 「id_dsa.pub」の中身をサーバ側の ~/.ssh/authorized_keys に追加します。
- 「nx_dsa.pub」の中身で /var/lib/nxserver/home/.ssh/authorized_keys のキーの部分を置き換えます。冒頭に port/agent forward の禁止に関する記述があったので、そこはそのままにしておきました。(もとのファイルはリネームして取っておきます)
- NX Client の Configure設定で、General/Serverの部分の「Key…」を押して、秘密鍵「nx_dsa」の内容を登録します。
- ここで一旦 NX Client で接続してみましたが、問題ありませんでした。これでデフォルトの鍵ペアではなく自分専用の鍵ペアでFreeNXが動いているはずです。
- ログイン認証時のパスワード認証を禁止します。
/etc/ssh/sshd_config の「PasswordAuthentication」の行を「no」に変更する。さらに、ローカルホストからのSSHログインではパスワード認証が必要なため、以下の内容を最終行に追加する。 - 再起動してNX Clientからログインしてみて問題ないことを確認する。
- Teratermからもログインしてみる。SSHではプレインテキストではログインできず、RSA/DSA鍵を使用したログインは成功することを確認する。
$ ssh-keygen -d -N “パスフレーズ” -f id_dsa
$ ssh-keygen -d -N “” -f nx_dsa
として、鍵ペアを生成します。
Match Address 127.0.*.*
PasswordAuthentication yes
Match Host localhost
PasswordAuthentication yes
ということで、無事に軽量なリモートUbuntu環境ができました。
参考にしたサイト:
NXリモートログインのセキュリティ強化 : 参考っつーか、ほとんどそのまま。実際に作業される方はこちらをご覧になったほうがいいかと思います。