COMPROMISED な公開鍵では ssh アクセスが許されない
久々技術的な話題のエントリーを。
ちょっとはまったので自分用のメモでもあります。
ホスティングサーバーの環境構築中(Ubuntu 8.04 (Hardy Heron) LTS)で、sshd の設定をおこなった。
パスワード認証を認めず、公開鍵によるアクセスだけを許すように設定したのだが、いざ ssh でそのサーバーにアクセスしようとすると、
% ssh user@somehost.com -p 30000
Permission denied (publickey).
とはじかれてしまう。
サーバー側の /etc/ssh/sshd_config の設定内容や、ローカルマシンの ~/.ssh/authorized_keys など、さんざん見直しても間違いがみつからず、ここでだいぶはまってしまった。
はまっときにはまずはログをみろという話ですね。鉄則を忘れてました。
/var/log/auth.log をみたところ、どうも次のところでひっかかっているのがわかりました。
Jun 18 13:44:38 xxxx sshd[3265]: Public key 11:22:33... blacklisted (see ssh-vulnkey(1))
see ssh-vulnkey とあるので、man ssh-vulnkey でマニュアルを調べたり Google 検索して調べたところ、脆弱(COMPROMISED)な公開鍵を使って ssh アクセスをこころみようとしていることが原因で、アクセスがはじかれているということがわかりました。
% ssh-vulnkey -a
を実行することで、使っている公開鍵がOKか(Not blacklisted)かそうでないか(COMPROMISED)がわかるのですが、案の定、使用している公開鍵が COMPROMISED となっていました。
秘密鍵、公開鍵のペアを生成し直す必要があるのですが、/etc/ssh/sshd_config に次の一行を追加すれば、暫定的に(セキュリティ上ほめられたことではないのですが) COMPROMISED な公開鍵でも ssh アクセスできるようになります。
PermitBlacklistedKeys yes
もちろん、変更を反映するには次を実行する必要があります。
% /etc/init.d/ssh reload
これでとりあえずはアクセスできるようになりました。
2008/06/19 12:46:10