仮想マシンへのログインに SSH の HostbasedAuthentication を使う

最近矢鱈に気に入っている Xen の話。
仮想ネットワークは NAT モードにしているので、Domain U へのアクセスは Domain 0 からしか行えない。このとき、xm console という手もあるが、普通は SSH を使うだろう((xm のマニュアルには、console はシリアルコンソールだから curses がちゃんと動かないかも、とか書いてある。))。今日日、sshd は何の設定をしなくても動いてくれているので何もしなくていいんだが、ちょっと嫌なことがある。
パスワードを入れるのが面倒くさい。自分だけのための、自分しか知らない、自分にしか見えない、自分しかいない、仮想マシンにログインするのにパスワードなんてなくていい。公開鍵認証にしたところで、パスフレイズをいれなきゃいけないので面倒なのは同じだ((ssh-agent を PAM あたりから蹴るべく頑張ればいいんだろうが、GSSAPIAuthentication の方が便利なのでモチベーションが上がらない。))。
というわけで、SSHHostbasedAuthentication を使ってみた。やり方は、こんな感じ:

【Domain U 側の設定】
/etc/ssh/sshd_config
  • HostbasedAuthentication yes
  • IgnoreUserKnownHosts yes
  • IgnoreRhosts yes
/etc/ssh/shosts.equiv
  • (Domain U から見た) Domain 0 の FQDN を書いておく。
/etc/ssh/ssh_known_hosts
  • ssh-keyscan -t rsa Domain-0-の-FQDN 」の出力を書いておく。
【Domain 0 側の設定】
/etc/ssh/ssh_config
  • EnableSSHKeysign yes
  • HostbasedAuthentication yes
  • HostbasedAuthentication の方は、Host キーワードを使って対象ホストを制限しておくのもいいかもしれない((EnableSSHKeysign は、ホストごとの設定にはできない。))。
これで、Domain 0 から Domain U への SSH がパスワード無しで繋がるようになる。Domain U の方に作るユーザアカウントは、ユーザ名が同じでありさえすれば UID やグループは違っていても構わない((僕の場合、Domain 0 のアカウントは Winbind が作り出しているものなので、useradd とかで作るやつとはちょっと違っている。))。パスワードは一切使わないので、passwd -l してしまって大丈夫だ。