見出し画像

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月の切り替えは対応できそうだ。