GitHub に SSH keys を設定する
はじめに
はじめまして。
この記事では、GitHub に SSH keys を設定したいと思います。
この記事が、エンジニアとして活躍する方々に貢献ができるように書かせていただきます。
SSH 鍵を生成する
デフォルトでは、RSA 暗号を使って、SSH 鍵を生成されますが、明示的に指定して SSH 鍵を生成する場合は、以下のように生成します。
RSA 暗号とは、公開鍵暗号方式の代表例で、非常に大きな数を素因数分解することが困難なことを利用した暗号です。
ちなみに、細田守さんが監督を務めた『サマーウォーズ』で(主人公)小磯健二が解いた暗号が RSA 暗号です。
ssh-keygen -t rsa
上記の SSH 鍵は、$2048$ ビットで生成されていますが、より強力な鍵を生成したい場合は、$4096$ ビットの鍵も以下のように生成することができます。
ssh-keygen -t rsa -b 4096
私は今回は、Ed25519 というアルゴリズムを使って、生成したいと思います。理由としては、GitHub のドキュメントでも使用されていたためです。
Ed25519 は、楕円曲線を使ったアルゴリズムの一つです。
楕円曲線暗号は、RSA より短い鍵長で同等の安全性を提供できる公開鍵暗号方式です。
ssh-keygen -t ed25519
GitHub の方では、SSH 鍵にコメントをつけています。GitHub に登録してあるメールアドレスをコメントとしてつけたい人は以下のコマンドを使ってください。
ssh-keygen -t ed25519 -C "your_email@example.com"
SSH 公開鍵を GitHub に追加
id_ed25519.pub
と id_ed25519
というファイルが .ssh
内にあると思いますが、「id_ed25519.pub
」が公開鍵です。秘密鍵の方を GitHub に公開しないように十分気をつけてください。
cat ~/.ssh/id_ed25519.pub
上記のコマンドにより確認できた公開鍵をコピーしてください。
次に、GitHub の「Settings」を開いてください。その後、「SSH and GPG keys」に移動してください。
「New SSH key」というボタンがありますので、そこをクリックし、「Key」と書いてある場所に先ほどコピーした公開鍵を入力してください。タイトルには、自分がわかりやすいタイトルをつけ、「Key type」は「authentication key」を選択すれば大丈夫です。
Authentication Key:主に SSH 接続の認証に使用されます。リモートリポジトリに対するアクセスを許可するための鍵です。
Signing Key:Git コミットやタグの署名に使用されます。この鍵を使用することで、あなたがそのコミットやタグを作成したことを証明することができます。
SSH config に明示的に指定
ここは、人によってはやらなくても大丈夫です。
主に、複数の SSH 鍵持ちの人向けです。
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
SSH 接続テスト
うまく、SSH 鍵が設定できたかどうかは、以下のコマンドで確かめることができます。
ssh -T git@github.com
成功していれば以下のようなコメントが返ってくるはずです。(qiita
と書いてある場所が自分の GitHub のユーザ名になっています。)
Hi qiita! You've successfully authenticated, but GitHub does not provide shell access.
SSH 鍵のパーミッションの確認
SSH 鍵のパーミッションが適切でない場合も接続に失敗することがあります。以下のコマンドで適切なパーミッションを設定します。
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600
はファイルを所有者だけが完全に管理できるようにし、chmod 644
は他のユーザーにも読み取り権限を与える設定です。
SSH クライアントの詳細なデバッグ情報
接続時の詳細な情報を表示するために、以下のコマンドを実行します。
ssh -vT git@github.com
おわりに
この記事では、GitHub に SSH keys を設定したいと思います。
この記事が、エンジニアとして活躍する方々に貢献できたら幸いです。