sshで手抜き空パスワードにハマる

テスト用のマシンで古めのCent OS 4.4を入れ,その中のアプリだけをアップデートする実験をいろいろやっていたら,テスト用アカウントでのログインが突然できなくなりました.

Oct 12 03:41:07 testmachine sshd[1978]: User test not allowed because account is locked

「account is locked」でググると,すぐさま回答のページが.
sshの"User hoge not allowed because account is locked - うまい棒の断片 - 断片部

確かに,「PAMなんて使ってないから切ってみよう」と,sshd_configから消したあとでした.
UsePAMを切ると,次に効いてきそうなのは次の設定.

PasswordAuthentication no
PermitEmptyPasswords yes

パスワードのみはブルートフォースが怖いのでイヤ,鍵認証はしたい,でもパスワード打ち込むのが面倒なので,鍵認証でヌル・パスワードにしたいと思って書いた行でした.
でも,このPermitEmptyPasswordsは,パスワード認証の時の話なんですよね.鍵認証の時に,鍵に加えてパスワードも使うかどうかは別の話で,それは鍵を作成する時に決まります.なので,

PasswordAuthentication no
PermitEmptyPasswords no

にしても,鍵認証には関係ありません.
同じく,パスワード認証で使われる/etc/password等にパスワードが設定されているかどうかは,逆に鍵認証には無関係(PAMを切っている場合).
なので,上記のページにあるように,適当なパスワードをアカウントにつけても,ヌル・パスワードの鍵ファイルを登録しておけば,鍵認証かつノンパスワードでログインが出来るようになりました.

LunaTear: sshのロックアカウント
によると,OpenSSHの少し前のバージョンからの仕様だそうです.