何をしたのか?
インターン先から支給されたPCでGitに接続しようとしたところ上述のエラーに遭遇。研究室で新規PC購入時Gitに接続すつ際にたびたび出会っているのでこの際にまとめてみました。
参考に載せますが、大変皆さんわかりやすい記事残していただいておりました!
ぜひそちらも参考にしてみてください。
環境
- M1 Mac Book Pro
- Big Sur 11.6
解決までのStep
1. ssh keyを作成
2. 作成したものを新規にGitHub登録
3. 作成したssh key を参照するようにconfigを編集
4. 完成
Step1 ssh keyを作成
$ ssh-keygen -t rsa GitHubに登録しているメールアドレス
作成するディレクトリとファイル名を聞かれる。基本的に~/.ssh/id_rsaとなっていればOK
-------------------
Enter file in which to save the key (~/.ssh/id_rsa):
-------------------
パスフレーズは特に必要なければEnterでスキップ
-------------------
Enter passphrase (empty for no passphrase):
-------------------
もう一度同じパスフレーズを入力してくださいと聞かれるので、また何も入力てない場合enter
-------------------
Enter passphrase (empty for no passphrase):
-------------------
以下のコマンドで作成されたことを確認。以下のように表示されればOK
$ ls ~/.ssh/
-------------------
id_rsa id_rsa.pub
-------------------
ちなみに…
Enter file in which to save the key (~/.ssh/id_rsa)
の部分で好きな名前やディレクトリを入れた場合、後ほど設定する.ssh/configのIdentifyFileの部分の設定を変更する必要があります。
詳しくはStep3で...
Step2 作成したSSH KeyをGit Hubに新規に登録
新規に作成した公開鍵をGit Hubに登録します。
クリップボードにcatやlessで表示させたり、下記のコマンドを使ってもコピーできます。
$ pbcopy < ~/.ssh/id_rsa.pub (Mac)
$ clip < ~/.ssh/id_rsa.pub (Windows)
下記にアクセスして、右上のAdd SSH key から鍵を追加することができます。
公開鍵をgithubにアップするが参考になります。
Step3 作成したSSH Keyを参照するようにconfigを編集
.ssh/configを編集して、作成したSSH Keyを参照するようにしていきます。
vimを立ち上げて~/.ssh/configを編集
$ vim ~/.ssh/config
何も表示されていない場合は、下記内容をコピペ
configファイルが既に存在する場合はHost名が被っていないことを確認して下記内容を追記
-------------------
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa
User git
-------------------
# iでインサートモード
# インサートモードからescを押した後、:wqで保存して終了
この時に、Step1で
Enter file in which to save the key (~/.ssh/id_rsa)
の部分で好きな名前やディレクトリを入れた場合は、.ssh/configのIdentifyFileの部分を自分用に変更してください。
個人的には、
ls -l | grep ^d
drwxr-xr-x 4 hogehoge staff 136 7 7 21:32 bitbucket
drwx------ 4 hogehoge staff 136 4 28 19:54 gitlab
drwxr-xr-x 4 hogehoge staff 136 7 7 21:33 github
drwxr-xr-x 5 hogehoge staff 170 7 6 14:21 AWS
みたいに.sshでディレクトリを作って、ディレクトリの中にそれぞれ秘密鍵と公開鍵が入るようにしているので、
Host GitHub
HostName github.com(絶対これ)
IdentityFile ~/.ssh/github/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
User git(絶対これ)
というふうにしています。
Step4 Pushしてみる
ここまでで問題なく使えるようになっているはずです。確認したい場合は、適当にPushしてみるといいと思います。
$ git push -u origin --all
-------------------
Counting objects: hoge, done.
Compressing objects: 100% (hoge/hoge), done.
~~ 略 ~~
master from origin.
-------------------
参考