Git
GitHub
SSH
ssh-keygen
SSHKeys

お前らのSSH Keysの作り方は間違っている


  • GitHubのHelpに記述されているSSH Keysの作成方法が僕の知っている作成方法と
    微妙に異なっていたので、書いてみました。

以下の参考にしています。

Generating SSH keys - User Documentation


SSH Keysの確認


  • 既存のSSH Keysの確認をする必要があるので、以下を実行

ls -al ~/.ssh

デフォルトでのSSH Keysの名前は以下のうちのどれか


  • id_dsa.pub

  • id_ecdsa.pub

  • id_ed25519.pub

  • id_rsa.pub


現在使用している鍵の暗号強度の確認


  • 以下のコマンドにて鍵長が2048以上かつ暗号化方式がRSA、或いはECDSAやEd25519であればOK

$ ssh-keygen -l -f ~/.ssh/id_rsa.pub

4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com (RSA)


新しいSSH Keyの作成



  1. -Cのコメント部分を入れ替えて、以下のコマンドを実行

※GitHubに登録しているEmailアドレスを使うのが一般的のようです。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"


  1. SSH Keysの保存先を聞かれているので、特に気にしなければそのままEnterを入力

Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]


  1. パスフレーズの入力を求められるので、入力

Enter passphrase (empty for no passphrase): [Type a passphrase]

# Enter same passphrase again: [Type passphrase again]

※ GitHubは安全なパスフレーズを入力しろって言ってる。

Working with SSH key passphrases - User Documentation

SSH Keysの作成完了


GitHubアカウントにSSH Keyの登録



  • ~/.ssh/id_rsa.pubの内容をクリップボードにコピー

pbcopy < ~/.ssh/id_rsa.pub


  • SSH Keyの登録


  1. GitHubにログインし、右上のプロフィールをクリック -> Settingsにて設定画面に遷移

  2. 左のメニューからSSH keysをクリック


  3. Add SSH Keyをクリック


  4. Titleに識別できる文字列を入力


  5. Bodyに先ほどクリップボードに入れた値をペースト


  6. Add Keyをクリック


確認


  • ターミナル上で以下を入力

ssh -T git@github.com


  • こんな感じで聞かれるので、GitHub's SSH key fingerprints
    に記述されているfingerprintsと一致するのを確認してからyesを入力

The authenticity of host 'github.com (207.97.227.239)' can't be established.

# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

下記のような文字列が出力されれば確認OK

Hi username! You've successfully authenticated, but GitHub does not

# provide shell access.

お疲れ様でした。

これでGitHubにgit@でアクセスできるようになります。

※ 尚、リポジトリで使用する場合、Gitのリモートリポジトリをhttpsに切り替えている場合はリモートリポジトリの

URLを切り替える必要があるので注意


最後に


  • 使っていない認証鍵は削除するとかRSAの1024bitsの鍵を使っている人とか居るみたいなので、
    そういった方、わからない方はこの機会に作り直しましょう。

  • 鍵の削除を行う際には公開鍵、秘密鍵の両方削除を行いましょう。また、GitHubに登録している公開鍵なども削除を行いましょう。

なぜ危険なのか参考URLは以下にのせておきます。

GitHubユーザーのSSH鍵6万個を調べてみた - hnwの日記