😸

tortoiseGitとGitHubの公開鍵認証を設定する

2024/09/09に公開

概要

GitHubとtotoiseGitの連携が取れなくなったのでまとめます

リモートリポジトリとの認証方式

  • SSH
  • HTTPS
    • ID/パスワード←廃止
    • Personal Access Token
      • personal access tokens (classic)←非推奨
      • fine-grained personal access token

SSH接続を試してみる

キーの作成

ssh-keygen -t RSA -b 4096

(作成されたファイルを確認)
id_rsa          // 秘密鍵
id_rsa.pub      // 公開鍵
(各鍵の形式を確認)
[root@e4e48095cbe2 tmp]# file id_rsa        // 拡張子を確認
id_rsa: PEM RSA private key                 // PEM形式
[root@e4e48095cbe2 tmp]# file id_rsa.pub    // 拡張子を確認
id_rsa.pub: OpenSSH RSA public key          // OpenSSH形式

あれ?pem形式じゃない

id_rsa(秘密鍵から作成した公開鍵の中身)
[root@e4e48095cbe2 tmp]# openssl rsa -pubout -in /tmp/id_rsa
writing RSA key
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxhpks61Pcr81RZ1s+k6Q
Vh9ONTDGZPRw9IYYS6fc8G4xSuZwC+zZJV863yMEAgcse51SU3z2H1kEWO3YTGHN
nJhSEA/AYcP3EYaI5b0rOU+OJ6ZtfmHiEikkZ+UGHMgOLflzUAKe1va4xDbloPXU
YEDstU8ykG1cGjPPf6zD9nQSXVvIhOOHW+LDFKVQwb9YErTrlQoZxCbxBKHF+3ai
zjfFn6n0NZrNFX/UzFzxV+69Tbf3C3bpgoIoihtW/vy7XNKD5nCanV3XHsEmZGBJ
ersmd2JfXJi/xM+SKLVtpuCW71oM6fpRrSztFmTGhzDZMsGdV7Kkzjq5XNi7mhFq
o4b8erEdWvGyoGA6QFbVu2Dk7RkB9lgVwm31SUKY4tbvQGW+tLORoM9w76xAfevx
GqdvufxKPbA0e4ysp8Rz7G4NiMv1AtOy/yhG+k7zIfFgTH2gtVNCjBnKNS3US6xK
8e7nCe/+gE2FL2XYo9z5W1nhX6FnjyBLoCgPVaLstly8PZQCzT5mBFapksPyKIWh
Aqtl1Rh+M9LKNSGR83uOmddReIcyfwregXYdZR6aivZC4EgUfZ9dnbyO/OGkprFY
VMTILlf7SRN1uF4yBM6/OmEZTugyEDCnqv0qtKjFK7yImZHSad/CgOdAgOGsNqDg
g45Kpi4gc5LAWqPxYe/2ETkCAwEAAQ==
-----END PUBLIC KEY-----
id_rsa(公開鍵の中身)
[root@e4e48095cbe2 tmp]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGGmSzrU9yvzVFnWz6TpBWH041MMZk9HD0hhhLp9zwbjFK5nAL7NklXzrfIwQCByx7nVJTfPYfWQRY7dhMYc2cmFIQD8Bhw/cRhojlvSs5T44npm1+YeISKSRn5QYcyA4t+XNQAp7W9rjENuWg9dRgQOy1TzKQbVwaM89/rMP2dBJdW8iE44db4sMUpVDBv1gStOuVChnEJvEEocX7dqLON8WfqfQ1ms0Vf9TMXPFX7r1Nt/cLdumCgiiKG1b+/Ltc0oPmcJqdXdcewSZkYEl6uyZ3Yl9cmL/Ez5IotW2m4JbvWgzp+lGtLO0WZMaHMNkywZ1XsqTOOrlc2LuaEWqjhvx6sR1a8bKgYDpAVtW7YOTtGQH2WBXCbfVJQpji1u9AZb60s5Ggz3DvrEB96/Eap2+5/Eo9sDR7jKynxHPsbg2Iy/UC07L/KEb6TvMh8WBMfaC1U0KMGco1LdRLrErx7ucJ7/6ATYUvZdij3PlbWeFfoWePIEugKA9Vouy2XLw9lALNPmYEVqmSw/IohaECq2XVGH4z0so1IZHze46Z11F4hzJ/Ct6Bdh1lHpqK9kLgSBR9n12dvI784aSmsVhUxMguV/tJE3W4XjIEzr86YRlO6DIQMKeq/Sq0qMUrvIiZkdJp38KA50CA4aw2oOCDjkqmLiBzksBao/Fh7/YROQ== root@e4e48095cbe2

キーの登録

(リモートリポジトリ側操作)
GitHubにアクセス→マイページ→SSH and GPG keys→New SSH key
公開鍵を登録

(クライアント側操作)
Putty Key Generatorを起動(Teraterm、WinSCPから起動できます)

Actions→Load an existing private key fileから、Loadボタンを押下し、作成した秘密鍵をインポート

save private key を押下

tortoiseGitの設定で、秘密鍵を登録

鍵フォーマットが新しいとエラー

PPKのファイルバージョンに3と2があるみたいで、2で作成してみる
(Parameters for saving key filesを選択)

バージョンを2に設定

下記のエラー
→どうやら

id_rsa(公開鍵の中身)
git.exe push --progress "origin" main:main
ERROR: You're using an RSA key with SHA-1, which is no longer allowed.
Please use a newer client or a different key type.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
fatal: Could not read from remote repository.

原因は分からないが、Githubでは、ECDSA鍵に切り替えることを推奨しているらしい。

ecdsa-sha2-nistp521 アルゴリズムで鍵を作成

id_rsa(鍵の作成)
[root@e4e48095cbe2 tmp]# ssh-keygen -t ecdsa -b 521
[root@e4e48095cbe2 tmp]# ls
id_esdsa  id_esdsa.pub

上記と同じように公開鍵をGitHubに登録

上記と同じように秘密鍵をPuTTY Key Generatorで取り込んで公開鍵作成(PPKのバージョンは2)

pushができるようになった。

Discussion