初めてGitHubにsshで接続する手順

目次

初めてGitHubにsshで接続するのに行った手順をメモしました。

OSは"Ubuntu 20.04.2"です。

SSH鍵を用意する

GitHubのドキュメントに「GitHubにSSHで接続する」という詳細な説明があったので、これを見ながら作業しました。

以下に実際にやったことをメモします。

既存のSSH鍵を確認する

SSH接続するには公開鍵と秘密鍵が必要です。 まずはすでに鍵を持っているか確認します。

$ ls -al ~/.ssh
合計 12
drwx------  2 izumi izumi 4096  5月 27 18:19 .
drwxr-xr-x 32 izumi izumi 4096  5月 28 13:21 ..
-rw-r--r--  1 izumi izumi 1326  5月 27 21:19 known_hosts

すでにディレクトリとファイルがありましたが、その中に公開鍵があるか確認します。 デフォルトでは公開鍵のファイル名は以下のとおりです。

  • id_rsa.pub
  • id_ecdsa.pub
  • id_ed25519.pub

存在しなかったので新しいSSH鍵を作ることにします。

SSH鍵を作成する

GitHubのメールアドレスに置き換えてコマンドを実行します。

指定しているオプションの内容

オプション 説明
-t 鍵の作成方法を指定する。あとに続く"ed25519"は「ツイストエドワーズ曲線を用いたエドワーズ曲線電子署名アルゴリズム」?だそうです?。RSA(Rivest Shamir Adleman)よりも強固で処理が早いらしいです。
-C コメント。鍵の区別に使うようで、ここではGitHubに登録したメールアドレスを指定します。
$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.

「キーを保存するファイルを入力してください」と聞かれますがそのままエンターキーを押します。

Enter file in which to save the key (/home/izumi/.ssh/id_ed25519): 

「パスフレーズを入力してください」と聞かれるので入力します。 入力せずにエンターキーでも先に進めるけど何か入力したほうが良いらしいです。

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

秘密鍵と公開鍵の作成結果が表示されます。

Your identification has been saved in /home/izumi/.ssh/id_ed25519 ◀これが秘密鍵
Your public key has been saved in /home/izumi/.ssh/id_ed25519.pub ◀これが公開鍵
The key fingerprint is:
SHA256:xxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|         ..      |
|    oo           |
|     ..o=  .     |
|      =. = . .   |
| . . . oS.o . .  |
|. + -o oo - =.o  |
|oo.DE+ ooo+ = .  |
|.Ao. .+.+o.-=. . |
|oo oo+.o=+= -+   |
+----[SHA256]-----+

SSH鍵をssh-agentに追加する

バックグラウンドでssh-agentを起動します。

$ eval "$(ssh-agent -s)"
Agent pid 6881

SSH秘密鍵をssh-agentに追加します。途中パスフレーズを聞かれるので入力します。

$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/izumi/.ssh/id_ed25519: 
Identity added: /home/izumi/.ssh/id_ed25519 (your_email@example.com)

GitHubアカウントにSSH公開鍵を追加する

xclipコマンドでSSH公開鍵をクリップボードにコピーします。 xclipコマンドがなかったのでインストールしました。

$ sudo apt-get update
$ sudo apt-get install xclip
$ xclip -selection clipboard < ~/.ssh/id_ed25519.pub

ブラウザでGitHubのページを開き、右上のアイコンをクリックします。メニューの"Settings"をクリックします。

メニューの[Setting]をクリック

メニューの[Setting]をクリック

左サイドバーにある"SSH and GPG keys"をクリックします。

サイドバーの[SSH and GPG keys]をクリック

サイドバーの[SSH and GPG keys]をクリック

“New SSH key"ボタンをクリックします。

[New SSH key]ボタンをクリック

[New SSH key]ボタンをクリック

“Title"には自分が分かりやすい鍵の説明を入力します。 “Key"にはクリップボードにコピーした公開鍵をペーストします。 最後に"Add SSH key"ボタンをクリックするとSSH公開鍵が追加されます。

SSH公開鍵を入力

SSH公開鍵を入力

“SSH keys"に追加した公開鍵が表示されます。

追加された公開鍵

追加された公開鍵

SSH接続を確認する

sshコマンドでGitHubにSSH接続してみます。

$ ssh -T git@github.com

ここで「アプリケーションが秘密鍵"xxxxxx@users.noreply.github.com"にアクセスしようとしましたが、ロックがかかっていました。」というダイアログが表示されます。鍵を作るときに入力したパスフレーズを入力し「ロック解除」ボタンをクリックします。

秘密鍵がロック

秘密鍵がロック

以下のようにユーザー名が含まれるメーセージが表示されれば接続できます。

Hi hn-carter! You've successfully authenticated, but GitHub does not provide shell access.