【Tips】Macのsshで「IdentitiesOnly yes」の時パスワードが保存されない問題を解決する方法

2015 02 05 19 57 02

Macのsshで、~/.ssh/configに「IdentitiesOnly yes」を指定すると、毎回上記画面のようにパスワードの入力を求められるようになり困っていました。「パスワードをキーチェーンに保存」にチェックしても毎回このウィンドウがポップアップしてしまうのです。

「IdentitiesOnly yes」を指定しなければ良いのですが、「IdentitiesOnly yes」無しの設定が増えすぎると「Too many authentication failures」と言われログインできなくなってしまう問題があります。また、パスフレーズ無しの秘密鍵を使うという最終手段(?)は、セキュリティの観点からできれば使いたくありませんでした。

打つ手なしかなと思い諦めかけていたところ、偶然、意外な解決方法があることを発見しました。以下その方法を説明します。

公開鍵id_rsa.pubを~/.sshに保存する

見つけた解決策は、Apple関連のQ and AサイトAsk Differentに掲載されていたもの。パスワードダイアログが表示されるという質問に対し、以下のような解決策が提示されています。

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

~/.sshに秘密鍵「ir_rsa」と、それに対応した公開鍵「id_rsa.pub」を保存しておけばよいようです。そんな馬鹿なと思いましたが、この通りに試してみると、本当にパスワードなしでログインできることが確認できました!秘密鍵名がid_rsaではない場合、「秘密鍵名.pub」があれば良いようです。

まとめると、まず~/.ssh/configが以下のようになっている場合、

ForwardAgent yes
ServerAliveInterval 60

# local machines
Host bronze
  User sora
  Hostname bronze.home.jp
  IdentityFile ~/.ssh/id_rsa_bronze
  IdentitiesOnly yes

~/.ssh以下に、秘密鍵「id_rsa_bronze」と、公開鍵「id_rsa_bronze.pub」を保存しておけばキーチェインに保存したパスワードが使われるようになります。

2015 02 05 20 25 01

元の質問はMac OS X Lion時代のもののようですが、Yosemiteでも同じように動きます。「IdentitiesOnly yes」のおかげで、パスフレーズを毎回入力しなければならなくてうんざりしている方は試してみてください。

スポンサーリンク