結論から言うと、「鍵は実行ユーザーのホームディレクトリに置きましょう」というだけの話。
以下の書籍でjenkinsを勉強しているのですが、Git利用のための「SSH鍵の設定」の項目があっさり4行で終了してます。
GitHubのサイト等の方法を参考に対応しましたが、表題の通りエラーが出て進まない。
以下のエラーメッセージで検索しまくりましたが、解決法見つからず。
・「Permission denied (publickey).」、「Please make sure you have the correct access rights and the repository exists.」、「Could not open a connection to your authentication agent.」
初心者的問題だったので、該当するケースが見つけられずハマりました。
【症状】
・gitでリポジトリをcloneしようとした際に以下のエラーが出る。
git clone git@github.com:ユーザー名/リポジトリ Cloning into ''... Permission denied (publickey). fatal:Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
ネットで調べるとSSHの連携で以下の作業が必要な様子。
①秘密鍵/公開鍵の作成
②公開鍵をGitHubサイト上に登録
対応したが、解決しない。
更に調べると、あらかじめ秘密鍵を登録しておいてgitでcloneするとのこと。
しかし以下のエラーが発生。
ssh-add /var/lib/jenkins/.ssh/id_rsa(秘密鍵のフルパス) Could not open a connection to your authentication agent.
またまた調べると、今度は「$eval `ssh-agent -s`」など実行してから実行するらしいとのGitHub公式説明。
※サイト:https://help.github.com/articles/generating-ssh-keys/
実行したけど、相変わらず「Could not open …」のエラーが起きる。
ここから数日ハマり、ネットはいくら調べても「$eval `ssh-agent -s`」を実行しろという記事しか見つからず・・・。
しばらくごちゃごちゃやっているうち、ふと気づきました。
そういえば鍵情報ってユーザーのホームに置かないとダメじゃない?
jenkinsと連携するという変な思い込みで、鍵は「/var/lib/jenkins/.ssh」の下に置いていた・・・sudoして、フルパスでいけばいいものだと思っていました。
(ホーム以外の場所に置いてもいける方法あるのかもしれませんが、分かりません(知識不足))
そして鍵を現在使っているユーザーのホームディレクトリにコピー。
sudo cp /var/lib/jenkins/.ssh/id_rsa ~/.ssh/
鍵の登録。
eval $`ssh-agent -s` ssh-add ~/.ssh/id_rsa
改めてclone。
git clone git@github.com:ユーザー名/リポジトリ Cloning info 'リポジトリ名'... remote:Counting objects:9146, done. ... ... Checking connectivity... done.
うまくいった!!
基本的な知識の不足ですね。
gitのSSH鍵登録方法は時間があるときに画像付けてまとめます。
→jenkinsのページ(Jenkins、はじめの一歩(~GitHub/SSH鍵))にまとめました