GitHub のリモート URL を HTTPS から SSH に変更する方法

普段よりGitHubを利用しており、あるプロジェクトの Git に Push した際、GitHubより「[GitHub] Deprecation Notice」と題されたメールが届きました。

Hi @xxxxx,

You recently used a password to access the repository at xxxxx/yyyyy with git using git/2.28.0.windows.1.

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 

これまでリモートURLに HTTPS を利用しており、メールにあるように GitHub には ID, Password でログインする Basic 認証を用いていました。このままでは Git へアクセスできなくなってしまうので、 SSH を利用しアクセスする方法に変更しました。実は変更は簡単なのですが、知らなければ迷うと思うので、その手順を紹介したいと思います。

1. SSH の秘密鍵・公開鍵を作成

SSH を利用するには SSH の秘密鍵・公開鍵が必要になります。
持っているかわからない方は、次のパスが存在するか確認してください。

C:\Users\(ユーザ名)\.ssh\id_rsa
C:\Users\(ユーザ名)\.ssh\id_rsa.pub

一般的には id_rsa というファイル名が利用されており、

となります。
上記が存在し、パスワードを覚えているのであれば、次に進んでください。
存在しない場合は、ssh-genkey を利用して作成します。 Mac でも Windows 10 でも標準で利用可能なので問題ないでしょう。 Windows 10 の場合、以下のパスに ssh-keygen が存在します。

C:\Windows\System32\OpenSSH\ssh-keygen.exe

利用方法は至って簡単です。コマンドプロンプトを開き、 ssh-keygen と入力するだけです。途中にファイルのパスやパスワードについて聞かれますが、特に問題なければエンターキーで飛ばして問題ありません。

これで SSH の秘密鍵と公開鍵の作成が完了です。

2. SSH の公開鍵を Github に登録

 1. で作成した公開鍵はテキストエディタで開くことができます。文字列が羅列されていますが、その先頭は「 ssh-rsa 」と表示されています。また末尾には「 (ユーザ名)@(PC名) 」が記されているでしょう。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/ehN93VROfdqk0FdB6Ey68EdcFXbTOI5sO0ET2CerhiHHVYo5Fpo2YqsOs6KOeBZxasXZzh2IpbenRlBDjIWOTjfhK79OfMfA1Pcn6Opmb7uIUXOZ4ILUlvPW9XSIlkKHXwjak7JQlqIUT6iKGK+wp69yrbSPabJkMNdxOwprig3OZH2XTxulVKONPSIRaX7XOWQc1HV1PPzSaeBJTC9fBwLivClP75a+8DmaKA4wVSsEh7gdNOO9FzPMtfrJfXNNnCdSJqknMWbTR3lTGo+9NFTzi8CS2F5EgM67eKA9TD+MFNwIxmItuE1LiYCeYYkQ9+3y+I5E/pOJsZoXLO89 tks2@MyPC

 この公開鍵を GitHub に登録しましょう。登録は GitHub へログインし、下記へアクセスしてください。
https://github.com/settings/keys

 「 New SSH key 」ボタンより公開鍵を追加する画面を開きます。

Title に任意の名前を、 Key に「 ssh-rsa 」から「 (ユーザ名)@(PC名) 」までの公開鍵を貼り付けます。そして最後に「 Add SSH key 」をクリックします。

正常に登録されると、 SSH keys に Title で名付けた名前が表示されています。これで登録は完了です。

3. SSH のパスを取得

GitHub において、プロジェクトの画面を表示します。

 「 Code 」ボタンをクリックし「 SSH 」を選択すると、その下のテキストボックスに SSH のパスが表示されます。これをコピーします。

4. Git の設定ファイルを変更

 Git を利用しているプロジェクトのルートパスには「 .git 」フォルダが存在します。その中に「 config 」ファイルが存在するのでテキストエディタで開きます。
 修正が必要なのは下記の場合だと9行目の「 url 」の項目です。 3. で取得した SSH のパスに書き換えれば OK です。

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	symlinks = false
	ignorecase = true
[remote "origin"]
	url = git@github.com:xxxxx/yyyyy.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

まとめ

 今回は、GitHub のリモート URL を HTTPS から SSH に変更する方法を紹介しました。複数変更が必要なプロジェクトがある方でも、1つ公開鍵を登録すれば、後は各プロジェクトの config を変更するだけですので大きな問題にはならないでしょう。ただし、 Windows で Sourcetree を利用しているユーザは、 pageant にも登録が必要なので注意してください。また別の機会に紹介したいと思います。