状況
発生した状況は以下の通りです。
- sshの鍵を新しくしたら、接続できなくなった
- 接続先には公開鍵を設置済み
- OSはWindows
- PuTTY(Pageant)で接続している
原因と対策
ローカルに保存されている”接続先の情報”を新しくする必要があります。
known_hostsを変更しましょう。
known_hostsには接続先のIPアドレスと公開鍵が保存されています。
SSH接続の際には接続先から公開鍵が送られてくるので、
それとローカルのknown_hostsを比較する事によって
接続先が信頼できるか(既知であるか)を判定できるという仕組みです。
なお、初回接続時には接続先の情報がローカルに無いため、
「信頼できる相手ですか?」とシステムに問われる事になります。
ここで許可すると、めでたくknown_hostsに接続先情報が追加されます。
しかし!
known_hostsファイルが見当たらない!
対策
どうやらSSH接続にPuTTYを用いている場合、known_hostsにあたる情報は
レジストリに記録されるようです。キーは以下の通り。
HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
(情報元:Stack Exchange | Where does Putty store…)
直接レジストリを弄るのは避けたい所ですが、消去用のコマンドが用意されています。
PuTTYのインストールディレクトリにて、以下を入力すればOKです。
putty -cleanup
(情報元:電気通信大学 情報基盤センター | Windows で PuTTY を利用した…)
反省
Macでターミナルから接続する事が多かった為、SSH接続関連の情報は
.ssh ディレクトリにあるものだと思い込んでいました。
PuTTYではknown_hostsだけでなく.sshディレクトリも作成されないのですね。
焦りました。
バージョン情報等
- OS:Windows7 Professional SP1(VMWare6.0.1上で動作)
- PuTTY:Release 0.60-JP_Y-2007-08-06