gitクライアントのSourcetreeで、GithubリモートリポジトリをURL(ssh方式)からクローンする際発生した権限エラーの解決手段をメモします。
環境 : Mac OS 10.13.6 、Sourcetree (Version 2.7)
Sourcetreeを開き、ファイル > 新規 > ULRからクローンで、
コピーしておいたgithubリポジトリのURLを入力して作成を試みると…
ダイアログに、ソースパス、またはソース URLとして正しくありません。と表示され、同ダイアログ上高度なオプションを開くと
Permission denied… 権限エラーでクローン出来ない。
といったようなメッセージが表示されている。
ローカルPCとgithubアカウントの紐づけるための公開鍵認証の設定が完了していませんでしたので、そちらを行いました。
(リポジトリに対して通信が許可されたクライアントであるということを証明する)
ターミナルを開き、
ssh鍵ペア作成のコマンドを入力
(Githubアカウントに使用しているメールアドレスを入力)
ssh-keygen -t rsa -b 4096 -C メールアドレス
ken$ ssh-keygen -t rsa -b 4096 -C XXXX@gmail.com Generating public/private rsa key pair. Enter file in which to save the key (/Users/ken/.ssh/id_rsa): /Users/ken/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/ken/.ssh/id_rsa. Your public key has been saved in /Users/ken/.ssh/id_rsa.pub. The key fingerprint is: SHA256:mOecv4mCU8cqhx8EiPBClsSEg4yMymTYwvDqL/yQRrs XXXX@gmail.com The key's randomart image is: +---[RSA 4096]----+ |^*. | |%%.. | |Bo+ . | |.+ . o | |.. +.S | |o o ..+o. | |.* +.o+ | |.o+ = +. o . | | Eoo =... +. | +----[SHA256]-----+
パスフレーズを入力して、指定の場所へ鍵ペアを作成する。
Enter file in which to save the key (/Users/ken/.ssh/id_rsa):
上記、:の隣に任意で鍵の名前を決められるようです。(指定しなければデフォルト名id_rsaで上書きされます)
作成完了した公開鍵(.pubの方)の中身を開き、コピーする。
cat (公開鍵のパス)
cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDD5Sq6ojw0H0arPciioHa8c82+pfcymcwwIPkeAxKW6qBJF25fH4hYHObIXDFEK5fbOFzNHuHEqv78QMtDwxSfZ5K3Vx0+etpzrclADfCK4wRLkJKlnDaY5wQ25BAnGLt9SaF7uHZIvtPw8HUPEyPetpgP51HaPU7Lw7gFdiN19EJwsZ0fibU2N9s+LiWySUBGtvdoMpBbePI2UyVpTc/wLryYZa3IuCyS+uM2GbLPNrazHTvvthyvNN2ljaL2YiX4PKhw6oeIDEIqm+ZZP9r6hRb0V+u5hv/uioqxU9LN5DeJ23U9rW+kMRuI0AE5hSvW1BtqZ/BCqlBGdFzo8fV77GLvXgV5H1ur+NvR00ThHQ8v+sVG5T5SvP8rI2VdQoYbR+GkEh8I25b7qDYh8YA9+857+LRjw/rqyYndmaOWgm6+C7FMG+DxEP91zqQsRPr+J6lm2x5edUmiYVJbx7w2LyTUspkz0RWcThWjxLEZo0Pw9m62KrSKOo6S2hpp9WAH5NgGI47Y6Tl+pVzyGVh4JQ0wQ3b3gAq2C1u6yjxmZZT2D+HgIwYJyQufJxO1ysXiruTOVkRCtw4flQeAUL+ciGMgj8y1TNtNWQszgg4pb6quHi02MgQ6uQbKroRE5dn0vK7fZhubj3QU1s3LdJGkIYOxpib1t9kJ2OGXmAthPw== XXXX@gmail.com
ssh-rsa から メールアドレスの終わりまでコピーします。
githubアカウントページを開き、右上のアイコンから
settings > SSH and GPG keys > New SSH key(緑のボタン)をクリックして以下の画面を開く。
Keyの箇所にコピーしておいた、公開鍵の内容をペーストして Add SSH keyをクリック。
前の画面でこのように表示されていれば公開鍵の登録完了。
再び、Sourcetreeからリポジトリクローン…
まだエラーが消えません。。
調べると、Sorcetreeの方で問題が上がっているようです。
https://jmcouillard.com/blog/sourcetree-2-7-and-osx-authentication-issue
上記のページの通り、手順を実行しました。
ターミナルを開き、パッケージマネジャーのhomebrewを操作(時間がかかります)
brew tap theseal/ssh-askpass
brew install ssh-askpass
上記の操作で必要なパッケージのインストールが終了したら、
以下のコマンドを実行して鍵のパスフレーズをキーチェーンに登録します。
ssh-add -K
鍵ペア作成時に任意の名前を使用している場合は下記のように.pubでない方の名前を-Kの後に指定します。
(名前がgithubの場合)
ssh-add -K github
ken$ ssh-add -K Enter passphrase for /Users/ken/.ssh/id_rsa: Identity added: /Users/ken/.ssh/id_rsa (/Users/ken/.ssh/id_rsa)
パスフレーズを入力して、Identity addedと表示されたらOK
この時点でもう一度、Sourcetreeからのリポジトリクローンを試みたところエラーが消えリポジトリ作成に成功しました◎
(追記)
他の事象でリポジトリへコミットをプッシュ出来ない際も同様の手順で解決しました。
(push出来なかったときのSourceTreeのエラーメッセージ)
git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master Pushing to git@github.com:XXXXXXXXXXXX/XXXXXX.git git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. Completed with errors, see above
参考
https://teratail.com/questions/117050
https://qiita.com/tnatsume00/items/e147662368d02e6416d2