2015年9月6日日曜日

[ssh] OpenSSHのアップデートでssh-agentがパスワードを覚えてくれなくなった問題への対処

ssh-agent/ssh-addを利用してsshを用いたサーバーへのログイン時のパスワード入力を省略している方、OpenSSHのアップデートにより、毎回パスワード入力を求められるようになった場合は以下の設定を疑ってみてください。

問題の症状:

OpenSSHパッケージを最新版にアップデートすると発生するようになった問題です。ssh-agentを起動してssh-addで鍵を正しく登録しているにも関わらず、sshコマンドを実行する度に"password:"というプロンプトが表示されてパスワードの入力を求められてしまいます。

環境:

問題に遭遇&解決した私のcygwin環境では以下のバージョンで問題が発生することを確認しました。
  • OpenSSH_7.0p1, OpenSSL 1.0.2d 9 Jul 2015
  • OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015

以下のバージョンでは問題は発生していませんでした。
  • OpenSSH_6.9p1, OpenSSL 1.0.2d 9 Jul 2015

原因と解決方法:

OpenSSHがデフォルトでサポートするkey typeに変更があったのが原因です。私の場合は鍵がDSAであったため、"ssh-dss"というkey typeをサポートするように設定することで、以前通り正しくパスワードを覚えてくれるようになりました。
具体的には~/.ssh/config(もしくは/etc/ssh_config)に以下の記述を追加すれば、デフォルトではサポートされていないキータイプがサポートされます。
PubkeyAcceptedKeyTypes +ssh-dss

自分の鍵のタイプは以下のコマンドで確認可能です。
% ssh-add -l
1024 xx:yy:8e:4f:72:2c:a4:b9:ad:ce:e7:80:a3:5d:e6:0f /home/xxxxx/.ssh/id_dsa (DSA)

cygwinのMLに質問を投げたところGeorgeさんという親切な方がアドバイスがとどき、教わった解決方法です。感謝。

関連情報:

1024bitの鍵は安全ではないので、2048bit以上の鍵を使うのが正しい解決方法だよ、という指摘をいただきました。DSAは1024bitまでしか扱えないようですが、RSAなど他のタイプで2048bit以上の鍵を作ることのがよいようです。RSAの2048bitの鍵を作って確認したところ、PubkeyAcceptedKeyTypesの設定を変えなくても期待通り動作しました。

参考:

0 件のコメント:

コメントを投稿