スポンサーリンク

GitHubにSSH接続する【GitHubシリーズ】その8

Computer

本記事の内容

本記事では「Macでssh接続でGitHubに接続する方法」について記す.

「説明はいいから,手っ取り早く解決したい」という方はちゃちゃっと解決したいを参照のこと.

※注意※今回の記事ではGitHubのウェブページでの操作もあるため,この記事を読みながら作業をする際は,この記事とは別にウィンドウを増やしてから読まれることをおすすめする.

※過去シリーズはこちら↓

GitHub
「GitHub」の記事一覧です。

GitHubのリモートレポジトリに接続する方法は次の2種類が主流なようだ.

  • HTTP接続:要はパスワード認証.
  • SSH接続:要は「鍵」による認証.

デフォルトはHTTP接続で,一定時間を置いてgit pullを実行したりすると(正確にはリモートリポジトリに接続するということ),ユーザー名とパスワードを問われる.
一方で,SSH接続は一度パソコンごとに設定してしまえば,何か問われることもなく楽に接続できる.しかもその設定も大して難しいわけではない.
とはいえ,ssh接続でなければならないわけではないので,SSHの設定をせず,そのままHTTP接続を使っている方もいよう.

しかしながら,2021/8/13からパスワード認証(HTTP接続)が廃止された.
実際,git pullを実行すると,次のように出てくる.

~% git pull
Username for 'https://github.com': GitHubのユーザー名
Password for 'https://GitHubのユーザー名@github.com':
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/リポジトリのパス/'(リポジトリのURL)

本記事では,「HTTP接続でGitHubを利用していたけれど,これを期にSSH接続に切り替えよう」という方に向けた,そのやり方を記すものである. 補足

実は”個人アクセストークンによる接続”という手法もあるようだが,個人的に「SSHのほうが分かりやすいし,SSH接続に切り替えれば今回の問題は解決されるし,SSHでいいんじゃね?」と思うので個人アクセストークンについては述べない.気になる方は参考文献を参照してみるとよい.GitHub側はトークンによる認証を推奨しているらしいのだが.

ページの先頭に戻る

結論

非常に簡単.というか,通常のSSH接続とやることは変わらずに,鍵を作成して,公開鍵をGitHubに登録し,各リポジトリの接続方式をSSHに変更するだけである.

ページの先頭に戻る

やること

ターミナルでの操作

ターミナルでやることは「鍵を作ること」である.

.sshへ移動

cd ~/.sshを実行.ホームディレクトリにある.sshへ移動する.

鍵の作成

ssh-keygen -t rsaを実行.鍵に名前をつけたかったら出力に従い,名前をつける.今回はid_gitという名前にした(名前を指定した場合,configに情報を追加の作業が増える.).

すると次のように出力されるはずである.

~% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/ホームディレクトリ/ユーザー名/.ssh/id_rsa): id_git
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_git
Your public key has been saved in id_git.pub
The key fingerprint is:
SHA256:VP8jt8nwZGS91aZXykb3vj5CjlmDqU5rT1PLNWgH7VY パソコンのユーザー名@ホスト名
The key's randomart image is:
+---[RSA 3072]----+
|          .      |
|         . .  ...|
|        .   ..+.E|
|       .     *+=*|
|        S   =+@Bo|
|           o+&=*.|
|         ..o*o* .|
|        .ooo.o ..|
|        oo..  oo.|
+----[SHA256]-----+

補足

鍵を作る際,名前を指定しなければ,id_rsaid_rsa.pubという鍵が作成される.その場合,以降はid_git,id_git.pubをそれぞれid_rsa,id_rsa.pubに読み替えていただきたい.

鍵が作成されているかを確認

1-1,1-2をそのまんま実行すると,現在は~/.sshにいるはずである.そこでlsコマンドを実行し,次のように出力されていれば成功である.

~% ls
authorized_keys  id_git     id_git.pub

もちろん,GitHub以外でSSH接続を利用している場合は今回作ったid_gitid_git.pub以外にも表示されるはずである. 補足

  • RSA暗号の他にed25519という形式の暗号もある.RSAよりもed25519のほうが強固らしいので,ed25519方式で鍵を作成しても良い.その場合,rsaの部分をed25519に変えれば良い.つまり,ssh-keygen -t ed25519を実行すればよい.
  • 鍵が本当に作成できているか心配な場合は,次小節の補足にid_git.pubの一例を記すので,それと似た文字列がid_git.pub(自分で作成した鍵)に書かれていることを確認するとよい.

鍵のコピー

id_git.pub(自分でつけた名前)の内容をメモ(コピー)しておく.
内容を確認するにはcat id_git.pub(自分で作った鍵の名前)を実行すると,ターミナルにその内容が表示されるので,それをコピーすれば良い. 補足

筆者の場合,id_git.pubの内容は以下であり,それをコピーする.

~% cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDDgY4RCVYcjjOtzyknlzr/ojS0lubob87GmZzbJu1kwMbVD1TiiD6rKGJNzvqXaHDZjQOLJL05lGiu950b6HcBR2a7uJoTHIIOUrD5HwXt/TOp+LcoHEJEQNNYAMWstwi7o2oTsmHINGYvIaue9jbxoOkQ8RaaE+DPriCnZGXFk6ksQEeezOsA/O8Mb6LS31tmgzxR+QbjutPoclmJXl6VvKmlm9n2m0CcW4HX46tf6HW/6cdNI2zNYrfqwxG6sdaXAXbPkWV/1Iru+y/F33NsM720w9bZljHJQnme1MMZiyHiMxm10Fmm/aaTdWKoAQN1T938JJ5enpPtxnJbIAm6fZy0d49fOzHw99meafPW5Yp9+pC20UGDraZcyP8FDxZ1BbNtJOtiEgsGWHgbVGWSy4eZxahiE1Rey4z5gNtDH/hoFvTEanJUcv71z37kkq/WEj8s+4IG2nEoghnqBkOFhzBpJq2xZP9SJfPaxzycAXQ2Qu0nnyq3plQidckA3kE= パソコンのユーザー名@ホスト名

configに情報を追加

鍵を作成で鍵の名前を指定した際にのみこの作業が必要である.

.sshディレクトリの中にconfigという名前のファイルを作成し(すでに作成している場合はconfigを開く),次を追記する.

Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_git(鍵の名前)
User git

ページの先頭へ戻る

GitHubでの操作

GitHubでやることは「作成した鍵を登録する」ということである.

設定画面を開く

設定画面を開く.すると次のような画面が出てくるはずである.

設定画面 その1

※赤いボックスで隠しているのは筆者のユーザー名。

「New SSH key」をクリック

次の画像にある「New SSH key」をクリック.

設定画面 その2

「Title」および「Key」を記入

「Title」は何でも良い.自分がわかればそれでOK.

「Key」について,鍵のコピーでコピーしておいたid_git.pubの内容を貼り付ける.
ここで注意なのが,id_git(自分でつけた鍵の名前)id_git.pub(自分でつけた鍵の名前)の2種類が~/.sshに作成されたはずだが,「.pub」のほうの内容を「Key」に書く.ちなみに,.pubはpublic,すなわち公開鍵の意味である.

鍵のアップロード

※赤いボックスで隠しているのは筆者のGitHubのユーザー名とパソコンのユーザー名とホスト名。

「Add SSh key」をクリック

クリックしてください.

ページの先頭に戻る

もう一回ターミナルでの操作

最後にリポジトリの接続方式をSSHに切り替える.SSH接続に切り替えたいローカルリポジトリのディレクトリ内に行き,次の1行を実行すれば良い.

git remote set-url origin XXXX

XXXXの部分は次の画像にある部分である.

リンクの場所

※色々個人情報を隠してます。

おしまい

以上のことが終わったら,git pullを実行してみて,ユーザー名とパスワードを問われなかったら成功.

ページの先頭に戻る

ちゃちゃっと解決したい

説明はいいから,結局何をやればいいんだ?ということが気になる方もいらっしゃるだろう.
ここでは,説明は省いて何を実行するかを列挙する.
上記を読んでいただいた方はある種のまとめとして本節を読んでいただければと思う.

cd ~/.sshを実行.

ssh-keygen -t rsaを実行.

鍵名を指定したい場合は出力に従って鍵名を指定.指定しなければid_rsaおよびid_rsa.pubが作成される.

id_rsa(自分で指定した鍵名).pubの内容をコピー.

cat id_git(自分で指定した鍵名).pubを実行すれば,鍵の内容を表示することができる.

(※鍵作成時に名前を指定した場合のみ) configに次を追記する.

Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_git(の名前)
User git

設定画面へアクセス.

「New SSH key」をクリック.

「Title」および「Key」を記入.

Titleは何でもいい.Keyには3.でコピーしたid_git(自分で指定した鍵名).pubの内容をペースト.

「Add SSH key」をクリック

SSH接続に切り替えたいローカルリポジトリへ行き,git remote set-url origin リポジトリのSSHのURLを実行.

おしまい

ページの先頭に戻る

今思うと当然なのだが,GitHubへの接続方式を変える,といってもSSH接続するだけであるから,やることとしては通常のSSH接続をする場合と同じである.
つまり,鍵を作成し,公開鍵をGitHub側に保存する,というただそれだけである.
とはいえ,GitHubはリポジトリごとに接続しているので,「HTTP接続からSSH接続に切り替えますよ」という意味のコマンドを一行打つ必要がある.

参考文献

ページの先頭に戻る

コメントをする

タイトルとURLをコピーしました