SSH のパスワード認証ができない環境で FreeNX を使う
FreeNX を使うと Linux デスクトップのリモート操作が SSH だけでできるのだが、sshd_config で PasswordAuthentication no にしちゃうと認証が通らなくなる。これは FreeNX が次のような 2 段階の SSH 接続をしていて、その 2 段階目 (自分のユーザで localhost に SSH 接続するところ) が公開鍵認証をサポートしてないからだ。
クライアント サーバ ┏━━━┓ (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) でも公開鍵認証をサポートしてくれればいいものを。