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 というファイル名が利用されており、
- 秘密鍵 … id_rsa
- 公開鍵 … id_rsa.pub
となります。
上記が存在し、パスワードを覚えているのであれば、次に進んでください。
存在しない場合は、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 にも登録が必要なので注意してください。また別の機会に紹介したいと思います。