SSHの公開鍵を作成しGithubに登録する手順

当記事の内容は以下のページとほぼ同様となります。


パートナーというかクライアントの企業にgitを勧めて、2社ほどsvnから移行してもらったことのある @mon_sat です。

Githubのヘルプには有益なページが多いですが、上記のページもそのひとつですね。

最近黒い画面を使わずにgitを使う系の記事や勉強会が増えてきまして、ただ1点、秘密鍵やら公開鍵やらのところはそうはいかない場合もあるのかと思います。

というわけでSSHの公開鍵を作成しGithubに登録する手順を上記のwebページをもとに(日本語で)まとめてみました。

基本的な解説

この記事で記載の手順がなぜ必要か理解していない方のために、簡単な説明をいたします。
(理解している方は、読み飛ばしていただいて構いません)

秘密鍵・公開鍵とは

秘密鍵・公開鍵とは、鍵交換方式の認証のために使う2つのファイル(データ)です。

f:id:mon_tinian:20140317183512p:plain

秘密鍵のファイルはあなただけしか見られないように扱い、公開鍵のファイルは認証を行う相手側(サーバーやWebサイト等。Githubもそのひとつ)に預けます。

秘密鍵と公開鍵はペアになっていて、秘密鍵が存在するマシンのみからしか、Webサイト(やサーバー)等を利用できません。 (IDパスワードの代わりとなり、Webサイトが「あなたであること」を確認するのです)

複数のマシンを利用する場合はそれぞれで鍵ファイルを作成し、複数の公開鍵を預けることになります。
秘密鍵と公開鍵は対になっています。

git(≠Github)は、おもにsshを使用して他サーバー上のリモートリポジトリとやりとりします。
sshの通信では、鍵交換方式による認証によりIDパスワードよりもセキュアな接続が可能です。

基本的な手順

おおむね以下のような流れになります

  1. 秘密鍵・公開鍵を作成する
  2. 公開鍵をGithubに預ける

公開鍵の有無を確認する

Macのかたはターミナルというアプリを、WindowsのかたはGit Bashをひらいてください。

以下のコマンドを入力します。

(念のため補足。先頭の $ はコマンドではありません。それ以降が実行するべきコマンドになります)

$ ls ~/.ssh

ここで以下のようなふたつのファイルが存在した場合は、すでに秘密鍵・公開鍵は作成されていますので、次の作業は飛ばしていただいて問題ありません。

id_rsa      id_rsa.pub

なお .pub という拡張子のファイルが公開鍵のファイルです。

秘密鍵・公開鍵のペアを生成する

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

メールアドレスは自分のメアドに変更してください(例: ssh-keygen -t rsa -C "suzuki@example.jp"

実行すると以下の3つの入力を求められますが、すべて Enter(return) で実用上構いません。

もしパスフレーズを設定した場合は以下のコマンドを実行し、パスフレーズの入力を省略する設定が可能です。

$ ssh-add ~/.ssh/id_rsa

公開鍵をGithubに登録する

公開鍵の内容をクリップボードにコピーします

Macの場合

$ pbcopy < ~/.ssh/id_rsa.pub

Windows(Git Bash)の場合

$ clip < ~/.ssh/id_rsa.pub

Githubに登録する

SSH Keysの設定ページ

f:id:mon_tinian:20140317213244p:plain

  1. 右上の工具アイコンより Account Settings のページを開きます
  2. 左側のメニューより SSH Keys のページを開きます
  3. 赤い下線の位置にある [Add SSH Key] のボタンをクリック

公開鍵を登録する

f:id:mon_tinian:20140317213538p:plain

  1. Titleは任意の名称を入力(どのPCの鍵かを区別するための名称など:MacBook Airなど)
  2. Keyの入力欄でクリップボードの内容を Paste する(⌘+v / Ctrl+v等)
  3. Add Key ボタンをクリック

試しに接続してみる

以上で終了ですが
初回のみ相手のサーバーを確認する作業がありますので、いちど試しに接続してみるとよいでしょう。

$ ssh -T git@github.com

つぎのように表示されたら、落ち着いて 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)?

接続に成功すると、つぎのようなメッセージになるはずです

Hi username! You've successfully authenticated, but GitHub does not
provide shell access.

これで自分のリポジトリに自由にアクセスできるようになりました

Pushしたり Pullしたり ご自由にどうぞ!

(おまけ)@mon_satのボコボコ相談室

(相談内容) わたしは黒い画面の扱いにいつまでたっても慣れません。 プロのWeb製作者として、そろそろ黒い画面くらい使えるようになりたいのですがどうしたら良いでしょうか?

黒い画面が難しく思えるのは、ターミナルのデフォルトは白い画面なのに、自分で黒くして腫れ物にさわるような対応してるからじゃ!

じゃあの。