/ linux

ssh鍵認証で毎回パスワードを求められた

githubのアカウントを作成してssh鍵認証の接続確認をした。認証確認のためのプロジェクトを作成してcloneとpushが確認できればいいや。

鍵を作る。githubに書かれてたコマンドのままでok。秘密鍵の名前はid_rsa_githubとした。

$ ssh-keygen -t rsa -C "your_email@example.com " # 鍵を作る
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

~/.ssh/configにgithub用の設定を追記

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github
    IdentitiesOnly yes

これであとはcloneしてcommitしてpushして終わりのはずが、fetchとかすると
Identity added: /Users/user/.ssh/id_rsa_github (/Users/user/.ssh/id_rsa_github)という表示があって毎回パスワードを求められた。

いちおうパーミッションを確認すると.sshは700で鍵は600で問題なさそう。
よくよく考えると素直に~/.sshに鍵を設置していればこんなことにはならなかったけど、設定ファイルを~/configs/みたいな場所を作って一箇所にまとめて、シンボリックリンクを貼っていた。そして今回は秘密鍵しかシンボリックリンクを貼ってなかった。

結果、公開鍵もシンボリックリンクを作ってあげるとIdentity added...といったことは聞かれなくなった。素直に作業進めておけばこんなことにはならないけど、こういうことしておいたほうが複数マシンでの作業とか便利だしなぁ。。


追記@2016/12/16

macOS Sierra 10.12.2にアップデートしてiTerm2もアップデートしたところ再発していました。

Enter passphrase for key '/Users/user/.ssh/id_rsa':

対応は ssh-add コマンドに -K オプションで解決できるようでした。

$ ssh-add --help                                                                                                                           (git)-[develop]
ssh-add: illegal option -- -
usage: ssh-add [options] [file ...]
Options:
(中略)
  -K          Store passphrases in your keychain.
              With -d, remove passphrases from your keychain.

実行コマンド

$ ssh-add -K /Users/user/.ssh/id_rsa

と思いきや、再起動をしたところパスワードの再入力が必要でした。。。

最終的に

~/.ssh/config ファイルを修正しました。追記したのは UseKeychain yesAddKeysToAgent yes です。

こんな感じで ~/.ssh/config の最初に追記しました。

#
# global setting for macOS Sierra 
Host *
	UseKeychain yes
	AddKeysToAgent yes

参考

  1. http://takuya-1st.hatenablog.jp/entry/2016/04/21/182547
  2. http://qiita.com/takumikkusu/items/3b18e475de02a91b37e8
  3. https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/(アンダーバーでイタリックに変更されないように