ssh-agentとssh configの設定方法 git push時に Permission denied (publickey). エラー


Gitで外部のサーバーのリモートリポジトリにgit pushしようと思ったらうまくいかなかったので、対処法をまとめました。
git push すると以下のようなエラーが出力されます。リモートリポジトリへのSSH接続がうまく行っていないのが原因でした。

 Permission denied (publickey).

ssh-agentで設定する

ssh-agentで設定します。ssh-agentはsshの秘密鍵のパスフレーズを指定します

eval 'ssh-agent'
ssh-add 秘密キーのパス

これで、git push ができるようになりましたが、ssh-agentを起動するたびに登録が必要なので手間です。

git configで設定する

ssh configにSSHの設定を登録していきます。ssh configには複数のsshの設定を登録できるのでとても便利です。
.sshディレクトリにあるconfigファイルを編集していきます。

sudo vi ~/.ssh/config

viで開いたら以下を記述
「Host」は任意でも良いはずなのですが、僕の環境では「HostName」と一致していないとなぜか失敗するので、 同じものを入力しました。

Host ホスト名
 HostName ホスト名
 User ユーザー名
 IdentityFile 秘密鍵までのパス
 Port ポート番号
 TCPKeepAlive yes
 IdentitiesOnly yes

これで接続できるようになりましたが、毎回SSHで設定したパスフレーズを聞かれます。

Enter passphrase for key '/Users/username/.ssh/privatekey':

パスフレーズを記憶するように設定

MacのSierra以降でパスフレーズを記憶してくれないようなので、ssh configに以下の設定を追加しました。

Host *
 UseKeychain yes
 AddKeysToAgent yes

これで無事接続できるようになりました。

参考サイト
macOS 10.12 Sierra で SSH のパスフレーズを憶えてくれない問題への workaround
GitHubに入門(その1)

コメントを残す