初めて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"をクリックします。
左サイドバーにある"SSH and GPG keys"をクリックします。
“New SSH key"ボタンをクリックします。
“Title"には自分が分かりやすい鍵の説明を入力します。 “Key"にはクリップボードにコピーした公開鍵をペーストします。 最後に"Add SSH key"ボタンをクリックすると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.