Blog

GitHub SSHの登録 fatal: Could not read from remote repository.


接続をもう一度0から見直す。

Githubへの接続SSH keyを作成する

2022/3/15よりDSAはサポートされなくなった

現在、Ed25519 アルゴリズムを使わないといけない()

ssh-keygen -t ed25519 -C "your_email@example.com"

GitHub接続注意点

  • ecdsa方式で作成する
  • userのemailを設定しないといけなくなった。
  • ssh-agentを起動して、登録する(MACの場合)
  • 秘密鍵生成時は パーミッションが500になっているので 400に変更する
  • .sshのフォルダのパーミッションも600にする
  • .sshフォルダ内のconfigファイルのパーミッションは644 初回pushするときにgitクライアントが読みに行くので600では不可能

秘密鍵の作成

//このコマンドを入力
ssh-keygen -t ed25519  -C  "github of your_email@example.com"

//ここで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:

それぞれのパーミッションを変更する

//秘密鍵は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ファイルのサンプル

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  //作成した秘密鍵

SSHは成功したのに、gitに接続できないエラー

Bad owner or permissions on /Users/xxx/.ssh/config
fatal: Could not read from remote repository.

SSH キーを ssh-agent に追加する MacOS

GitHubは公開鍵認証方式

ssh-agent を起動して秘密鍵を登録しておけば、sshコマンドを実行した際に自動的に秘密鍵を適用して認証処理を行ってくれます。

$ eval "$(ssh-agent -s)"
> Agent pid 59566 //この数字はプロセスなので同じではありません。

SSH 秘密鍵を ssh-agent に追加し、パスフレーズをキーチェーンに保存します

$ ssh-add --apple-use-keychain ~/.ssh/[your ssh key ]

これでもエラーが出る場合は下記を参照してください。

調査すると

セキュリティに影響を与える可能性のあるファイル(秘密鍵、構成ファイル、許可された鍵)の一般的な規則は、所有者以外の誰もが書き込み可能であってはならないということです(秘密鍵にアクセスできないようにする必要があります)。

結論 .sshフォルダのパーミッションは700

configファイルのパーミッションは 600

パーミッションを変更する

自分以外の人が書き込めないようにする必要がある。

//パーミッションは700にする
chmod 700 .ssh
//実行権限がないとフォルダに移動すらできない

rwx------@ 15 studiohide  staff    480  5  8 22:46 .ssh
=>OK

config ファイルは600番にする

chmod 600 .config

-rw-------@  1 studiohide  staff   503  5  8 23:16 config
=>OK

Hostの名前を確認する

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

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

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

公開鍵を登録する GitHubのsetttingから登録する

接続の確認をする

//-Tはテストオプション
$ ssh -T github

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

ここまでやってもおかしい? fatal-could-not-read-from-remote-repository

git config –list –show-origin でPCの設定を見てみる

%  git config --list --show-origin

file:/opt/homebrew/etc/gitconfig        credential.helper=osxkeychain
file:/Users/xxxx/.gitconfig             init.defaultbranch=develop

.gitconfigファイルに設定が記載されている

.gitconfigを確認すると、name とe mailがコメントされていた

コメントアウトするとpushできた

% git push origin develop
Enumerating objects: 1024, done.
Counting objects: 100% (1024/1024), done.

まとめ

今回はPCが変わったため、.gitconfigファイルの設定を見落としていた。

またssh鍵の生成方法も日本語のサイトをみると間違えていた。時間をロスしてしまった。

当たり前だけど、日本で有名な技術系のサイトといえど、公式サイトを見たほうが良い。

公式サイトはこちら

https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent


一つ前の記事 Firebase Fetch - No Access-Control-Allow-Origin has been blocked by CORS policy
次の記事 マルチデバイス開発ツールとしてのFlutter(フラッター)のメリット