本記事では、Githubを使うときにSSHで接続する方法についてご紹介します。
詳細はこちらをご覧ください(docs.github.com)
公開鍵と秘密鍵の作成
最初に.shhディレクトリを作成しましょう。
以下のコマンドで.shhディレクトリがあるかを確認できます。なければ「No such file or directory」と表示されます。
$ ls -al ~/.ssh
ls: /Users/test/.shh: No such file or directory
鍵を生成するコマンドを実行します。
$ ssh-keygen -t ed25519 -C "test@example.com"
Generating public/private ed25519 key pair.
デフォルトでは、生成されるファイルはホームディレクトリの「.ssh」下に生成されます。
"test@example.com"には、Githubで登録しているメールアドレスを入力してください。「ssh-keygen」で「ed25519」の暗号化方式の鍵を作成します。
#keyファイルの名前を設定することができます。特になければ、Enterを押しましょう。
Enter file in which to save the key(/Users/test/.ssh/id_ed25519):
Created directory '/Users/test/.ssh'/.
「[Enter passphrase (empty for no passphrase):」パスフレーズを設定することができます。
鍵を使うときにここで指定したパスフレーズを入力しないとGithubでpushできないように制限することができます。
「[Enter same passphrase again:」では、先ほどと同じパスフレーズを入力してEnterを押しましょう。
ssh keyの秘密鍵「id_ed25519」、公開鍵「id_ed25519.pub」のペアが作成されます。
公開鍵「id_ed25519.pub」をGithubに登録することでSSH接続ができるようになります。秘密鍵「id_ed25519」は、大切に保管しましょう。
[Enter passphrase (empty for no passphrase):
[Enter same passphrase again:
Your identification has been saved in /Users/test/.ssh/id_ed25519.
Your public key has been saved in /Users/test/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxx test@example.com
The key's random art image is:
+--[ED25519 256]--+
| xxx. |
| xx+. o |
| --xx+. |
+-----[SHA256]-----+
ssh-keygenの主なオプション
-t 作成する鍵の暗号形式の指定(ed25519、dsa、ecdsa、デフォルト:rsa)
-C コメントの指定(コメントは鍵の最後に表示されます。デフォルト:Macのユーザー名@ホスト名。-C"":コメントの削除)
-p パスフレーズを変更する
-N 新しく設定するパスフレーズを指定する
-E fingerprintを表示する形式の指定(md5、デフォルト:sha256)
-f ファイル名の指定
GithubにSSHの登録
こちら(https://github.com/settings/keys)にログインして、公開鍵を登録しましょう。
GitHubへ接続
ローカル環境で以下のコマンドを入力します。
$ ssh -T git@github.com
リモートサーバへの接続を有効にするfingerprintが表示されます。Githubの公開鍵のfingerprintと一致しているかこちら(docs.github.com)からご確認ください。
The authenticity of host 'github.com (xxxxxxxxx)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
一致していることが確認できたら「yes」と入力してenterキーを押しましょう。
Are you sure you want to continue connecting (yes/no/[fingerprint])?yes
先ほど、設定したpassphraseが求められるので入力してください。画面に入力内容は表示されないですが、入力が完了したらenterキーを押しましょう。
以下の通り表示されていれば接続完了です。git pushなど使えるようになります。
Hi user! You've successfully authenticated, but GitHub does not provide shell access.
まとめ
今回は、SSHキーの生成方法、Githubへの登録の仕方についてご紹介しました。
これからGithubを使う方は参考にしてみてください。