Featured image of post SSHキーを作成してMacからGitHubにSSH接続する方法

SSHキーを作成してMacからGitHubにSSH接続する方法

MacでSSHキーを作成してGitHubにHTTPSではなくSSHで接続する手順。HTTPSとSSHの違い、ssh-keygenでの鍵作成、GitHubへの公開鍵登録、configファイルの作成、接続確認まで。認証キーでの接続を覚えておくと便利です♪

1606文字

HTTPSとSSH

どっちを使うべき?

Githubを使っていると、リポジトリをcloneしたりpushする際に、HTTPSSSHどちらを使えば良いか?と言う点で悩むことがあると思います。

推奨はHTTPS

Githubとしては推奨はHTTPSとしています。

HTTPS通信で認証を行う場合は、認証はGitHubのユーザー名/パスワードによる認証となります。
また、SSH方式より高速です。

セキュリティ的にはSSH

しかし、JenkinsAnsibleその他のミドルウェアからGithubにアクセスする際は、基本的にはSSH方式で接続を行っていると思います。
多少、通信速度は落ちます公開鍵方式を用いるのでセキュリティがしっかりしています。

今回はMacでのSSHキーの作成からGithubへのSSH方式での接続確認までの手順を紹介致します。

手順

SSHキーの作成

まずはSSHキーを作成しましょう。
ターミナルから、以下のコマンドを実行してください。

command
ssh-keygen -t rsa


するとターミナルに以下の入力を求められます。

メッセージ内容
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):生成するファイルの名称を求められます。デフォルトのid_rsaで良ければ何も入力せずにエンターキーを押しましょう。
Enter passphrase (empty for no passphrase):パスフレーズの入力を求められます。特に設定不要なら何も入力せずにエンターキーを押しましょう。
Enter same passphrase again:パスフレーズの再入力を求められます。指定していなければ何も入力せずにエンターキーを押しましょう。

正常にSSHキーが生成されると以下のようなログが表示されます。

bash-4.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): xxx_rsa_id
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in xxx_rsa_id.
Your public key has been saved in xxx_rsa_id.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx {ユーザー名}@{サーバー}
The key's randomart image is:
+--[ RSA 2048]----+
|    .=x=x.x.     |
|    x.+x .x.     |
|   x.xx    x     |
|   .=.x. x x.    |
|    .x+ x        |
|       x   x     |
|                 |
|                 |
|                 |
+-----------------+

そうすると、~/.ssh/ディレクトリの中に以下の2つのファイルが作成されていると思います。

ファイル名説明
xxx_rsa_id秘密鍵。基本的にこのファイルはそのままノータッチ。
xxx_rsa_id.pub公開鍵。こちらの情報を各種サーバーや外部サービスに登録することでSSH通信を可能にします。

公開鍵の内容をGithubに登録するので、catコマンドやvimコマンドでクリップボード等にコピーしておいてください。

Githubに公開鍵の登録

次にGithub側に上記で作成した公開鍵の情報を登録します。

まず、Githubにログインしたら、アカウントメニュー>Settingをクリックします。

左部Personal settingメニューからSSH and GPG keysをクリックします。

Titleに任意の名前をつけて、Keyに先ほどコピーした公開鍵の情報を入力したらAdd SSH keyボタンをクリックします。

これでGithubに公開鍵が登録されました。

configファイルの作成

次にconfigファイルを作成します。
configファイルとは、ssh経由でのリモートサーバーの接続する際に利用される設定ファイルです。

このファイルを用意すると、以下のコマンド毎回打つ必要が無くなり、とてもすっきりします。

command
ssh {ユーザー名}@{ホスト名} -i ~/.ssh/{秘密鍵}


今回は以下のソースを追加してください。

~/.ssh/config
Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/{使用する秘密鍵}
  User git

接続確認

では、ここでローカルマシンからGithubへの接続確認をしてみましょう。

以下のコマンドを実行してみてください。

command
ssh -T github


以下のログがターミナルに表示されればSSH通信の設定が完了です♪

command
$ ssh -T git@github.com
The authenticity of host 'github.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?
Hi {リポジトリ名}! You've successfully authenticated, but GitHub does not provide shell access.


※前半のメッセージは初回接続時のみ表示されます

終わりに

以上のように、思っていた以上に簡単にSSHでの通信準備が整いました。

Githubへの通信はHTTPS通信でも可能ですが、認証キーを用いた接続方法を覚えておくことで他のサービスやシステムを使う際に役に立つので、ぜひSSH通信の設定方法を覚えてみてください。