GitHub SSH ECDSA Ed25519への対応

前回記事 [GitHubにpushできない Username for 'https://github.com': って訊かれる！](https://qiita.com/Yoh_Yasushi/items/eec4b6f6a83fe76d522a) も参考にして、GitHubのSSH界隈の事情に変更があったので、アプデした情報に基づいて記載します。

# 経緯

2023年3月23日に突如、[We updated our RSA SSH host key](https://github.blog/2023-03-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](https://desktop.github.com/) からの使用には問題なかったようです。

```
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](https://github.blog/2023-03-23-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`をいじれって書かれている文献や書籍をみたことがありません。この点についてもより詳しい方からの情報を求めたいです。

以上、長くなりましたら備忘も兼ねて記載しました。役立ちましたら幸いです。

# 参考文献など
[Git入門コマンドライン演習80](https://www.amazon.co.jp/dp/B09VNRQPTV/)

[GitHub実践入門](https://www.amazon.co.jp/dp/477416366X/)

[We updated our RSA SSH host key](https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/)

[GitHubにpushできない Username for 'https://github.com': って訊かれる！](https://qiita.com/Yoh_Yasushi/items/eec4b6f6a83fe76d522a)