Windows 版 SourceTree で "POTENTIAL SECURITY BREACH!" という警告が出たときの対処

Windows 版 SourceTree で "POTENTIAL SECURITY BREACH!" という警告が出たときの対処

花見をするなら桜より梅のほうが好ましいと思っている kagata です。今年もどこかへ観梅に行きたかったのですが、盛りの時期にうっかり風邪をひいてしまいました。今年はこのまま行きそびれることになりそうです。

さて、今回は Windows 版 SourceTree でふだん見かけない警告メッセージを見つけたのでその内容と対処法についてご報告申し上げます。

状況

以下は Windows 7 Professional SP1 + SourceTree 1.7.0.32509 + PuTTYjp 0.66で検証しました(SourceTree 1.8系は早く安定しないものでしょうか)。

SSH クライアントに PuTTY を設定した Windows 版 SourceTree で SSH 経由の push ないし pull をしようとしたときに、以下のような警告が表示されて先に進めなくなることがあります。

20160303-1.png

WARNING - POTENTIAL SECURITY BREACH!
The server's host key does not match the one PuTTY has
cached in the registry. This means that either the

server administrator has changed the host key, or you
have actually connected to another computer pretending
to be the server.
The new rsa2 key fingerprint is:
ssh-rsa 2048 ??:??...
If you were expecting this change and trust the new key,
enter "y" to update PuTTY's cache and continue connecting.
If you want to carry on connecting but without updating
the cache, enter "n".
If you want to abandon the connection completely, press
Return to cancel. Pressing Return is the ONLY guaranteed
safe choice.

"POTENTIAL SECURITY BREACH!" がいかにも恐ろしげです。続きを読むと、サーバ側のホストキーが PuTTY のキャッシュしたものと合いませんよ、サーバ管理者がホストキーを変更したか、別のサーバにつながっているのかも…とのこと。

"y" か "n" をたたけと言ってきますが、残念ながら SourceTree からはどちらも入力できません。

ホストキーのキャッシュを削除する

サーバ管理者に問い合わせたところ、確かに別のサーバに引っ越しをしたとのことでした。外から悪さをされて危ないサーバにつなぎにいったわけではなかったようです。ひとまずよかった。

では、古いホストキーのキャッシュを削除しましょう。でも、SourceTree はどこにホストキーのキャッシュを持っているんでしょうか。Linux なら ~/.ssh/known_hosts に持っているのが典型ですが、今回は Windows クライアントです。

上でも書いたとおり、今回の環境では SourceTree の SSH クライアントに PuTTY を設定しています。そこで PuTTY がホストキーをどこにキャッシュするか調べてみたところ、Windows のレジストリに持っていることがわかりました。

SSHの鍵を新しくしたら接続できなくなった【PuTTY】 | ユニキャストラボ

なんと。警告の中にあった "the one PuTTY has cached in the registry" って、ほんとに Windows のレジストリのことだったのか。キャッシュを整理するのにレジストリをいじらないといけないなんて、ちょっとこわいな…。

上の記事によればコマンドラインからキャッシュをクリアできるそうですが、ほかのサーバのキャッシュまで消してしまう必要はないので、レジストリエディタで当該のキャッシュだけ削除することにしました。

レジストリエディタを立ち上げて、HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys から当該サーバのキャッシュを探し、右クリックから「削除」を選択します。

20160303-2.png

ホストキーをキャッシュしなおす

キャッシュを削除してから再度 pull を試みると、次のような表示になりました。

20160303-3.png

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.

ssh-rsa 2048 ??:??...
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.

新しいホストキーをキャッシュするかしないか、また "y" か "n" をたたけといわれてしまいました。だから SourceTree からは入力できないんですって。

しかたがないので、PuTTY 本体を立ち上げて SSH 接続し、新しいホストキーをキャッシュしました。そのあと SourceTree に戻り、pull なり push なりを試みると、無事うまくいきました。

まとめ

SSH クライアントに PuTTY を設定した Windows 版 SourceTree で "POTENTIAL SECURITY BREACH!" という警告が出たときの対処法をご紹介しました。ホストキーのキャッシュをレジストリから削除したあと、新しいホストキーをキャッシュしなおせば OK です。

SSH クライアントとして OpenSSH を使用していたり Window 以外の OS 上で動作させていたりする場合は、警告の内容やホストキーのキャッシュの場所が上記と異なるはずです。ただ、やらないといけないことはだいたい同じでしょう。

なお、警告の中にもあったとおり、この警告が出るときは DNS 偽装など悪意ある攻撃を受けているおそれもあります。新しい接続先を信頼してよいか、必ずサーバ管理者に確認をとるなどしてから対応するようにしましょう。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ