公開鍵・秘密鍵の作成とSSHを使用したGitHubへの接続
はじめに
公開鍵を作成する際に手順が分からなかったため記事に残します。
主にGit Docに記されている手順に従います。
初心者が書いたものですので間違いを含んでいる可能性があります。ご了承下さい。並びにご指摘いただけると幸いです。
実際に作成する
鍵の方式には種類があります。
Github Docではその中でもEd25519という鍵の方式を推奨しています。
このEd25519という鍵の生成方法はこれまで一般的に使われてきたRSAよりもセキュリティとパフォーマンスの観点から優れているとのことです。
そこで、今回はEd25519で鍵を作成してみます。
では早速ssh-keygenコマンドで秘密鍵・公開鍵を作成します。
ssh-keygen -t ed25519 -C "任意のコメント"
-tは暗号方式を指定するためのオプションらしいです。今回はed25519を指定していることになります。もし-tをつけなければデフォルトであるRSA方式が用いられるとのこと。
一方、-Cはコメントを指定しているみたいです。指定したコメントは公開鍵の末尾に追加されます。特にコメントが必要なければ-C ""
のように空で問題ないらしいです。
Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]`
と表示されるのでEnterを押します。
Enter passphrase (empty for no passphrase): [Type a passphrase]
表示に従ってセキュアなパスフレーズを入力します。
Enter same passphrase again: [Type passphrase again]
表示に従ってもう一度パスフレーズを入力してEnterを押します。
Your public key has been saved in ・・・
鍵が保存されたようです。
では実際に確認してみましょう。
cd ~/.ssh
open .
id_ed25519(秘密鍵)とid_ed25519.pub(公開鍵)が作成されていたらひとまず成功です。
ここでmacOS Sierra 10.12.2 以降を使用しているので、キーをssh-agentに自動的に読み込ませ、パスフレーズをキーチェーンに格納させるためには、~/.ssh/configファイルを修正する必要があるとこのこと。
まず~/.ssh/configファイルが存在するか確認します。
open ~/.ssh/config
The file /Users/YOU/.ssh/config does not exist.
確認したところ、ファイルが存在しなかったため自分で作成し、下記のように設定します。
Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
AddkeysToAgent yes
はssh接続の際に認証に使用した鍵をssh-agentに自動的に登録するという設定みたいです。
UseKeychain yes
は鍵を使用する際、システムがユーザーのキーチェーン内のパスフレーズを検索するとともに、ユーザーから提供されたパスフレーズが正しかった場合にそのパスフレーズをキーチェーンに保存するという設定らしいです。
この設定を追加することで自動的にキーチェーンのパスフレーズを取得することになるため、再起動した後でもパスフレーズを求められなくなるようです。
設定が終わったら以下を実行します。
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
これにより指定した秘密鍵のパスフレーズがキーチェーンに保存されます。
これで鍵の作成と設定は完了です。
ではGitHubに公開鍵を登録しましょう。
公開鍵をGitHubに登録する
まずGitHubで自分のアイコンをクリックし、設定に移動します。
その後Accessメニューの中の「SSH and GPG keys」の項目をクリックします。
SSH keysの横に「New SSH key」というボタンがあるので押し、keyのところに今回作成した公開鍵を入力します。
公開鍵をコピーするには
pbcopy < ~/.ssh/id_ed25519.pub
とします。
また、ターミナルで公開鍵の中身を出力してそれを手動でコピーする方法もあります。
cat ~/.ssh/id_ed25519.pub
最後に「Add SSH key」をクリックすれば無事完了です!
Discussion