GitHubにSSHで接続したい
GitHubからパスワードアクセスはできなくなるというメールが来た。
Basic authentication using a password to Git is deprecated and will soon no longer work. Visit https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information around suggested workarounds and removal dates.
Thanks,
The GitHub Team
普段、Windows 10から、Git for Windowsのコマンドを使って、GitHubを操作している。2021年8月13日からは、SSHまたはTokenだけになるので、今のうちにSSHに移行することにした。
Git for Windows付属のGit Bashで、
$ ssh-keygen -t rsa -b 4096
とする。SSHの鍵ファイルのフォーマットはいくつかあるようで、GitHubでは対応できないフォーマットがあるようだ。Git Bashのssh-keygenは大丈夫。
今回は、4096-bit RSAにした。この前に、ssh-keygen --helpをしたところ、ed25519もサポートしているようだ。知らなかった。
これで、Cドライブのホームに、.sshのフォルダができて、秘密鍵id_rsaと公開鍵id_rsa.pubができる。.sshのフォルダに移動して、改行コードをLFにしておく。
$ nkf -Lu --overwrite id_rsa
$ nkf -Lu --overwrite id_rsa.pub
そして、
$ clip < id_rsa.pub
を実行して、公開鍵をクリップボードにコピーする。
GitHubのwebサイトにログインして、アカウントのアイコンから、「Settings」->左側のメニューで「SSH and GPG keys」をクリックして、「Key」のところにクリップボードの公開鍵をペーストする。「Add key」をクリックして完了。
接続を確認するために、Git Bashで、
$ ssh -T git@github.com
を実行する。ここで、@の前には自分のアカウント名ではなく、gitとすること。Tオプションは、仮想端末の割り当てを禁止するため。下の実行結果になるはず。
The authenticity of host 'github.com (NN.NN.NN.NN)' can't be established.
RSA key fingerprint is SHA256:nGl7xxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,NN.NN.NNNNN' (RSA) to the list of known hosts.
.sshフォルダに、以下の内容のconfigファイルを作成する。Userのところは、自分のアカウント名ではなく、gitにする。IdentityFileは公開鍵のファイルへのフルパスを書いたが、秘密鍵を書いているサイトもあった。どっちが正しいのか、わからないが、公開鍵の方で動いた。
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa.pub
User git
リポジトリにアクセスするときは、例えば、cloneする場合は、
$ git clone git@github.com:[自分のアカウント名]/[リポジトリ名].git
とする。pullの場合は、
$ git pull git@github.com:[自分のアカウント名]/[リポジトリ名].git
とし、commitして、push する場合は、
$ git commit -m [コメント]
$ git remote set-url origin git@github.com:[自分のアカウント名]/[リポジトリ名].git
$ git push origin
とする。これで、8月の切り替えは対応できそうだ。