バナー画像

GitHub、とても便利なソースコード管理のWebサービスですよね。自分がソース管理をする目的で使えるだけでなく、URLを誰かに伝えると、ブラウザだけでソースコードを見てもらえます。

どうせならよりセキュアに接続するために、SSH接続にチャレンジしてみましょう。

前提知識

ここで前提知識であるSSHや秘密鍵、公開鍵について解説しましょう。

SSHとは

SSHとはSecureShellの略で、超簡単にいうと「どこかのコンピューターと安全に通信するためのプロトコル」です。SSHでの通信は、認証のための情報や通信内容が暗号化されるので、安全な通信が可能というわけです。

また、認証にはすぐ後に解説する秘密鍵・公開鍵を使うので、パスワードの入力が必要なくなります。一応、GitHubのサイトのSSHについて解説している部分を引用しておきます。

SSHプロトコルを使うと、リモートサーバーや各種サービスへの接続や認証が可能になります。SSHキーを使うと、GitHubとの接続のたびにユーザー名やパスワードを入力する必要がなくなります。

一般的に、ユーザー名とパスワードを入力する認証方法はセキュリティ的に弱いとされています。パスワードによる認証を一切無効にして、後述する「鍵」による認証のみにするといったことがよく行われます。

公開鍵、秘密鍵とは

公開鍵と秘密鍵について、他のサイトで素晴らしい解説が多数あるので、ここでは簡単に解説してみます。

公開鍵と秘密鍵という2つの鍵を作ります。公開鍵は一般に公開するためのもの、秘密鍵は自分だけのものとします。公開鍵で鍵をかけたものは、秘密鍵でしか開けられません。逆もまたしかりで、秘密鍵で鍵をすると公開鍵でしか開けられません。

自分の手で2つの鍵を作ります。そして公開鍵は、あらかじめ通信する相手に預けます。つまりGitHubに登録するのです。

GitHub側とクライアントPC側、双方がこれらの鍵を使って認証や暗号化通信を行うというわけです。

GitHubにSSH接続できるようにする方法

では実際に作業してみましょう。手順はGitHubのサイトにある手順に基づいています。

鍵の作成

鍵はターミナルでコマンドを打って生成します。ただ、既存の鍵があるのにコマンドを実行すると上書きされてしまいます。よって、既存の状態を確認します。

cd ~/.ssh
ls -al

実行中にフォルダがないといったエラーメッセージが表示されれば、今まで鍵を生成したことがありません。lsを実行してファイルが何も表示されなければ、鍵を生成したことがありません。次の手順へ進んでください。

もし仮にフォルダが存在していれば、lsコマンドの結果を見てid_rsa.pubとid_rsaというファイルが存在しているか確認してください。id_rsa.pubが公開鍵、id_rsaが秘密鍵です。この2ファイルがそろっていれば、「公開鍵をGitHubへ登録する」から実行してください。

ssh-keygenで鍵を生成する

ssh-keygenコマンドで鍵を生成します。「GitHubに登録したメールアドレス」はダブルクウォーテーションでくくって下さい。

ssh-keygen -t rsa -b 4096 -C "GitHubに登録したメールアドレス"

入力をうながすメッセージが表示されますが、すべて何も入力せずEnterしてください。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(PC名)/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

以下のように表示されます。

Your identification has been saved in /Users/(PC名)/.ssh/id_rsa.
Your public key has been saved in /Users/(PC名)/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:(長い文字列) (指定したメールアドレス)

The key's randomart image is:
+---[RSA 4096]----+
(暗号みたいな文字列)
+----[SHA256]-----+

これで鍵の生成は終了です。

公開鍵をGitHubへ登録する

公開鍵をGitHubへ登録しますが、要はコピペで文字列を貼り付けるだけです。

公開鍵、といっても中身はただのテキストです。普通にエディタでも開くことができます。しかしせっかくターミナルを開いているので、コマンド一発でコピーしましょう。

pbcopy < ~/.ssh/id_rsa.pub

次にGitHubを開き、SSH鍵の登録画面を開きます。右上のユーザーのアイコンをクリックし、プルダウンメニューの「SSH and PGP Keys」をクリックして、さらに「New SSH Keys」をクリックしてください。

Titleは適当です。KeyにCommand+Vでペーストしてください。

「Add SSH Key」をクリックして終了です。

SSHエージェントに鍵を登録する

この鍵を使う!とエージェントに伝える必要があります。

eval "$(ssh-agent -s)"

お使いのPCがMacOS Sierra 10.12.2かそれ以降なら、configというファイル名を新規に作り、以下を貼り付け、~/.sshフォルダに置く必要があります。

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

configファイルができたら、ファインダーのメニューバーの「移動」「フォルダへ移動」を選択し、「~/.ssh」と貼り付けて移動ボタンをクリックしてください。そこへ上記で作ったファイルを置きます。

続けましょう。以下を実行します。

ssh-add -K ~/.ssh/id_rsa

これで完了です。

接続できたかどうか確認する方法

ターミナルから、以下のコマンドを実行してください。

ssh -T git@github.com

すると、以下のいずれかのワーニングが表示されます。

The authenticity of host 'github.com (IP ADDRESS)' 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)?
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

お使いのPCで実際に表示されたメッセージ中の「RSA key fingerprint is 〜」と、上記のいずれかが一緒なら問題ありません。yesとタイプしてEnterしてください。

Hi (入力したメールアドレス)! You've successfully authenticated, but GitHub does not
provide shell access.

これで接続完了です!お疲れ様でした。

まとめ

本記事では、GitHubにSSHで接続する方法まで解説しました。

感触がつかめたら、パスフレーズを設定したり、実際にリポジトリをクローンしてみてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。