githubへのpushでPermission denied (publickey)が出た時
検索するといろいろな情報が出てきますが
自分の場合は少し特殊なケースだったのでメモします。
※環境はcentos7.5です。
鍵に名前を付けたことが原因でした
鍵を生成する際に自分で名前を付けることができます。
(今回自分も始めてやってみました)
こうするとデフォルトで鍵が読み込まれなくなります。
「~/.ssh/id_rsa」、「~/.ssh/id_dsa」、「~/.ssh/identity」
これらの名前以外ではデフォルトで読み込まれなくなります。
エラー
結果として以下のエラーが出ます。
Permission denied (publickey)
対応方法
以下のファイルを作成します
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_git_example_rsa #ここに自分の鍵のファイル名
User git
自分の場合はこの方法で接続できるようになりました。
当初検索して出てきた結果
パーミッションの確認
.ssh # 格納ディレクトリは700
┗id_git_rsa # 秘密鍵は600
このように設定していないかを確認します。
こちらも原因になることがあります。
ssh-agent
ssh-agentというのはlinuxのデーモン(裏側で動いているプログラム)らしい。
こちらの方法でも今回のエラーは解消できた。
eval "$(ssh-agent)" #デーモン起動
ssh-add ~/.ssh/id_git_example_rsa #鍵を登録する
ssh-add -l #登録された鍵を確認
当初このコマンドを起動時に実行する方法を思いつき
bashrc bash_profileなどに登録しようと考えていましたが
おそらくconfigファイルを生成したほうがOSの負荷が少ない感じがします。
参考ページ
gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
こちらのページが見つからなかったら
違う方法で対処していたかもしれません。
非常にわかりやすくまとめてくださっていました。感謝です。