SSH のパスワード認証ができない環境で FreeNX を使う

FreeNX を使うと Linux デスクトップのリモート操作が SSH だけでできるのだが、sshd_config で PasswordAuthentication no にしちゃうと認証が通らなくなる。これは FreeNX が次のような 2 段階の SSH 接続をしていて、その 2 段階目 (自分のユーザで localhostSSH 接続するところ) が公開鍵認証をサポートしてないからだ。

クライアント                                      サーバ
┏━━━┓    (1) ユーザ nx で SSH 接続         ┏━━━┓
┃      ┃                 (公開鍵認証)         ┃      ┃
┃      ┃──────────────────→┃      ┃
┃      ┃                                      ┃      ┃
┃      ┃    (2) ユーザ mobitan で SSH 接続┌─┃      ┃
┃      ┃                  (パスワード認証)└→┃      ┃
┗━━━┛                                      ┗━━━┛

とはいえ、やはりインターネットに面したサーバは PasswordAuthentication no にしたい。その場合、(2) の認証手段として SSH の代わりに FreeNX 独自のユーザ DB を使う方法がある。
/usr/NX/etc/server.cfg を編集。

EnableUserDB = "1"
EnablePasswordDB = "1"

DB にユーザを追加。

# /usr/NX/bin/nxserver --useradd mobitan
NX> 900 Setting password for user: mobitan.
NX> 102 Password: 
NX> 102 Confirm password: 
NX> 110 Password for user: mobitan added to the NX password DB.
NX> 900 Adding public key for user: mobitan to the authorized keys file.
NX> 716 Public key is already present in: /home/mobitan/.ssh/authorized_keys2.
NX> 900 Verifying public key authentication for NX user: mobitan.
NX> 900 Public key authentication succeeded.
NX> 999 Bye.

FreeNX サーバを再起動。

# /usr/NX/bin/nxserver --restart

これで PasswordAuthentication no でも FreeNX が使える。しかしユーザパスワードの管理対象がひとつ増えるのは何だかなあ。最初から (2) でも公開鍵認証をサポートしてくれればいいものを。

参考文献

この件に関して日本語の資料が全然なかたーよ (--;