閉じる

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)

コメントを残す