前回記事 GitHubにpushできない Username for 'https://github.com': って訊かれる! も参考にして、GitHubのSSH界隈の事情に変更があったので、アプデした情報に基づいて記載します。
経緯
2023年3月23日に突如、We updated our RSA SSH host key なんてのが発表されました。GitHubでSSHの漏洩があったかららしいんですが、ツイ民の間では「急にpushできなくなった」として話題になりました。
これへの対応も合わせてGitHub
の基本のおさらいしましょう。
対応
まあ、この記事しか読まない方もいるので、初手から始めていきます。なお、動作環境はUbuntu 22.04LTSです。なお、上述のSSH界隈の変更でもWindows
のdesktopアプリケーション GitHub Desktop | Simple collaboration from your desktop からの使用には問題なかったようです。
cd
mkdir gitFolder //自分の環境のフォルダ名に以下読みかえてね!
git init
でわかりやすい場所にGitHub
専用のフォルダを作ってから、
git config --global user.name "YohYasushi" //もちろん自分のユーザー名に以下読みかえてね!
git config --global user.email "(あなたのめるあど)@gmail.com"
を行ってください。そして、
git config --list
を行って、設定がなされたか確認をしてください。
user.name=YohYasushi
user.email=(あなたのめるあど)@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
となっていたらOK
です。
We updated our RSA SSH host keyによると、SSH
の公開鍵が、ECDSA
かEd2251
だった方は問題なかったみたいです。
今回はEd25519
で作成したいと思います ( ECDSAとEd25519の違い?知りません。 )。
ssh-keygen -t Ed25519 -C "(あなたのめるあど)@gmail.com"
を行ってキーを作成してから(作成場所はデフォルトとします)、
cat ~/.ssh/id_ed25519.pub
全部コピーして(アルファベットのホニャホニャの部分じゃなくて全部です)、
https://github.com/YohYasushi/Renshu/settings/keys
に移動して、 「Add deploy key」 をクリックしてから、コピーしたものをペーストして保存してください( スクショは省きます )。
でもまだ完了ではありません!!
いちおうここで、
ssh -T git@github.com
を行って、
Are you sure you want to continue connecting (yes/no/[fingerprint])?
をyesにし、該当するGmailのパスワードも入力し、
Hi YohYasushi! You've successfully authenticated, but GitHub does not provide shell access.
を得てSSH認証が通ったか確認をしておいてください。
ですが、ここから更に確認すべきことがあります。
cd ~/GitFolder/Renshu/.git
ls -al
を行って隠しファイルとフォルダまで表示させた中の、
-rw-rw-r-- 1 yohyasushi yohyasushi 213 4月 1 05:00 config
の設定変更する必要があります。
cat config
を行うと↓のように表示されるはずですが、
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/YohYasushi/Renshu.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
この中の、
[remote "origin"]
url = https://github.com/YohYasushi/Renshu.git
fetch = +refs/heads/*:refs/remotes/origin/*
を、
[remote "origin"]
url = git@github.com:YohYasushi/Renshu.git
に変更してやる必要があります。
この最後に書いた処理をしないとpushしても、
Username for 'https://github.com':
Password for 'https://YohYasushi@github.com':
ここでYohYasushiを入力し、パスワードの入力しても、
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/YohYasushi/Renshu.git/'
ってことになります。これは、前回記事でも記載したとおりですね。
これで、取り急ぎなんかファイルと作ってから、
git add .
git commit -m "1st"
git push -u origin main
としても行けるはずです。
だめだった方がいたら、教えてください!
まとめ
これは噂ですが、GitHub
へのpushはSSH認証でされている方がほとんどのはずですが、実はオフィシャルには、「https認証
でしてくれ!!」、らしいです(真偽は定かではありませんが)。しかしながらconfig
が初期設定でhttps
になっていることを考えると、あながちその噂も間違いではないのかもしれません。
あと下記に参考文献とか書きましたが、私の知る範囲では隠しフォルダのconfig
をいじれって書かれている文献や書籍をみたことがありません。この点についてもより詳しい方からの情報を求めたいです。
以上、長くなりましたら備忘も兼ねて記載しました。役立ちましたら幸いです。