Blog

GitHub Permission denied (publickey).fatal: Could not read from remote repository.

GitHubにて、2022/3/15よりDSAの鍵はサポートされなくなりました。

上記エラーはSSHの鍵があっているなら、MACでは、パーミッションの問題のことが多いと思います。

またBackLog等、GitHubを2箇所、別のアカウントで登録する方法についてもまとめています。

GitHubでのSSH Keyについての変更点

  • 1 ecdsa方式で作成する
  • 2 userのemailを設定しないといけなくなった。
  • 3 秘密鍵生成時は パーミッションが500になっているので 400に変更する
  • 4 .sshのフォルダのパーミッションは755にする
  • 5 .sshフォルダ内のconfigファイルのパーミッションは644 初回pushするときにgitクライアントが読みに行くので600では不可能

秘密鍵の作成 (ウインドウズではGitBashを使って生成すること)

//このコマンドを入力
ssh-keygen -t ed25519  -C  "GitHubの登録Email"

//ここでkeyの名前を入力できる 
//作成してからあとから名前変更すると、接続できなくなる このkeyの名前で、sshに登録しているため
Enter file in which to save the key (/Users/me/.ssh/id_ecdsa):

//パスワードは省略可能
Enter passphrase (empty for no passphrase):

//パスワード利用する場合はもう1回
Enter same passphrase again:

SSH秘密鍵と、フォルダのパーミッションを変更する

//秘密鍵は400
chmod 400 [秘密鍵の名前]


//確認する
ls -la 


//ここがrだけだと400ということ => OK
-r--------   1 userName  staff   525 10 20 10:42 id-rsa_xxxxxxxxx

//configファイルは644
chmod 644 config

//階層を1つ上がる
cd ..

//.sshのフォルダの権限変更  必要なことがある
chmod  755 .ssh

.sshのconfigファイルのサンプル

configファイルの権限は644にしておく

初回 git で接続するときにgit クライアントがconfigファイルを読み込まないといけないため

Host github   //Hostの名前で、接続できるようになる。 例)ssh github 
  HostName github.com //ここからは、変更不可 git remote -v のときに git@github.com~~と表示される つまり userはgitで、hostはgithub.comということ

  User git  //gitHubは必ずUserはgitにする 自分のUserNameにはしないこと!                          

  AddKeysToAgent yes

  IdentityFile ~/.ssh/id_rsa4094_github  //作成した秘密鍵

Hostの名前を確認する

//gitを利用したいフォルダにて 
 git config remote.origin.url

//このように表示されるはず
git@github.com:[Username]/[RepositoryName].git

ここの@よりあとから:コロンの前までを、上記configファイルのHostに設定すること

SSH公開鍵を登録する

GitHubのsetttingから登録する

接続の確認をする

//-Tはテスト
$ ssh -T github

//成功するとこのようなメッセージがでる
Hi ! You've successfully authenticated, but Backlog does not provide shell access.

Backlog等 に接続 2つ目のgitアカウントにて接続する場合の設定

IdentitiesOnly yesにしておくこと。
これを設定しないと、すべてのssh鍵を読み込みに行く。 なので意図したアカウントにアクセスできなくなる。 特定のuserでBacklogにアクセスするので、大切

更にHostの設定も大切

通常Backlog のssh URLはこのようになっている

[UserName]@[バックログ.git.backlog.com]:/[someName]/[something].git

この@の後ろから、コロンの前までをHostに設定する

Host [バックログ].git.backlog.com
  HostName [バックログ].git.backlog.com
  User [UserNameを設定する]

//複数githab アカウントを利用するとき必要
  IdentitiesOnly yes
  IdentityFile ~/.ssh/id_ed25519_somename

別のアカウントで接続してみる。フォルダに移動してgit config の設定を変更する

そこのフォルダ内だけは、githubの2つ目のアカウントを利用する想定

–localはそのフォルダ内だけに適用される設定。

git config --local user.email [登録したいEmail]  //""ダブルクオーテーションは必要ない

git config --local user.name [2つ目のgitのUserName]

参考にさせていただきました。

https://note.nkmk.me/git-config-setting/

ご連絡、質問は、Facebook よりお願いいたします。

コネクト facebook page