毎回、PC をセットアップする際に調べてしまうため備忘録として残しておく

実際のコード

Mac

  1. 以下のコマンドを GitHub のEメールアドレスに置き換えて実行
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f "id_rsa"
> Generating public/private rsa key pair.
  1. 以下が表示されるのでファイル場所を入力(デフォルトでいい場合は「Enter」押下)
> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
  1. 以下が表示されるのでパスフレーズを入力(なしでいい場合は「Enter」押下)
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
  1. SSH キーを ssh-agent に追加する

    4-1. バックグラウンドでssh-agentを起動

$ eval "$(ssh-agent -s)"
> Agent pid 59566

※ macOS Sierra 10.12.2 以降を使用している場合は ~/.ssh/config ファイルを変更して自動的にキーを ssh-agent にロードしパスフレーズをキーチェーンに格納する必要あり

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  1. SSH 秘密鍵を ssh-agent に追加してパスフレーズをキーチェーンに保存する
ssh-add --apple-use-keychain ~/.ssh/id_rsa
  1. 公開鍵をクリップボードにコピーする
pbcopy < ~/.ssh/id_rsa.pub
  1. SSH キーを GitHub アカウントに追加する

Windows(基本的には Mac と同じ)

  1. 以下のコマンドを GitHub のEメールアドレスに置き換えて実行
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f "id_rsa"
> Generating public/private rsa key pair.
  1. 以下が表示されるのでファイル場所を入力(デフォルトでいい場合は「Enter」押下)
> Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]
  1. 以下が表示されるのでパスフレーズを入力(なしでいい場合は「Enter」押下)
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
  1. 公開鍵をクリップボードにコピーする
type ~/.ssh/id_rsa.pub | clip
  1. SSH キーを GitHub アカウントに追加する

複数の GitHub アカウントを切り替える場合

  1. 使用したい GitHub アカウント毎に SSH 鍵を作成する

  2. ~/.ssh/config を編集する ※ない場合は新規作成

Host github.com # メインアカウント
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/id_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes

Host github.com.sub # サブアカウント
  HostName github.com
  User git
  Port 22
  IdentityFile ~/.ssh/id_rsa_sub
  TCPKeepAlive yes
  IdentitiesOnly yes
  1. GitHub に公開鍵を登録する

    GitHub にログインして、[Settings] > [SSH keys] > [Add SSH key]で作成した公開鍵を登録する

  2. 以下のコマンドを実行して設定が上手くいっていることを確認する

ssh -T git@github.com
ssh -T git@github.com.sub
# Hi {yourname}! You've successfully authenticated, but GitHub does not provide shell access.