SSHで公開鍵認証を使ってGithubに接続する設定のメモ

Advertisement

職場の新しいiMacを設定していて「あれ、どうやんだっけ?」となったので、また忘れた時のためにメモっておきます。SSHを使ってGithubに接続するための準備と設定方法です。

Githubのヘルプ に詳しく手順が書かれているんですが、複数ページに分かれていて若干行き来するのが面倒なんですよね。ということで、ここでは極力短くまとめておきます。

Gitの準備

Gitにnameとemailを登録します。Githubにpushした時に、ここで設定した氏名とメールアドレスがGithubで表示されます。

全てのリポジトリで同じ氏名を使う場合

--globalオプションをつけて設定します。

$ git config --global user.name "John Doe"

以下のコマンドで設定を確認できます。

$ git config --global user.name

同様にメールアドレスを登録します。

$ git config --global user.email "john.doe@yourdomain.com"

これでGitの準備は完了です。

既存のSSH Keyの確認

以下のコマンドで.sshがすでに存在するか確認します。

$ ls -al ~/.ssh

以下がないか確認します。

  • id_dsa.pub
  • id_ecdsa.pub
  • id_ed25519.pub
  • id_rsa.pub

これらのファイルがない場合、新たにKeyを作成するか、ある場合はそれをGithubに接続するために使っても良いです。

SSH Keyの作成

以下のコマンドでKeyを作ります。

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

-tは鍵の種類(dsaとかrsaとか)、-bはバイト数、-Cはコメントの新規作成だそうで。rsaの鍵を4096バイトでメールアドレスをコメントとして作成するというコマンドですね。

前の2つは必須ですが、メールアドレスの記載はあくまでコメントなので必須ではないはず。これがベストプラクティスということなのかな?

ファイル名を聞かれるので、Keyのファイル名を入力します。デフォルトの場合はそのままEnterで。

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

Passphraseを入力するとKeyの作成が完了します。

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

これで.sshフォルダに、指定したファイル名でKeyが作られます。

ssh-agentにKeyを登録する

リモートに接続するたびにパスフレーズを聞かれなくするために、ssh-agentにKeyを登録します。

バックグラウンドでssh-agentを走らせる

$ eval "$(ssh-agent -s)"

macOS Sierra以降の場合、~/.ssh/configに以下を記述する必要があります。これがないとGithubに接続するたびにPassphraseを聞かれます。

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

この記述だと、すべてのホストでこのKeyを使う設定なので他のホスト用の鍵もあって複数設定 している場合はHost *のところをGithubに限定する必要があります。そういう状況にある方には説明不要でしょうけど。

Keyを登録する

$ ssh-add -K ~/.ssh/id_rsa

KeyをGithubに追加する

最後に、作ったKeyをGithubに追加します。

Keyをクリップボードにコピーする

$ pbcopy < ~/.ssh/id_rsa.pub

KeyのGithubへの追加

Githubの設定画面の「SSH and GPG keys」ページで、新しいSSH Keyを登録します。

以上です!

さいごに

こういった設定は僕にとって日常的に行う作業ではないので、しばらくすると記憶があいまいになってしまうんですよね。こうやって備忘録として一度まとめを書くと情報が脳に定着しやすいので、次回は記憶に残っていることを願って!

では、Happy Githubbing!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です