GitHubにSSHで接続するための設定方法

GitHubにSSHで接続するための設定方法

GitHubにSSH接続するための設定方法

HTTPSではなくSSHでで接続するための設定方法をまとめます。

SSHの公開鍵と秘密鍵を生成する

SSHで使う公開鍵と秘密鍵のデータを生成します。

生成には ssh-keygen コマンドを使用します。生成は ~/.ssh ディレクトリに行います。

$ mkdir ~/.ssh
$ cd ~/.ssh

生成先のディレクトリを生成したら、ssh-keygen-t rsa コマンドで鍵を生成します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\xxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\xxx/.ssh/id_rsa.
Your public key has been saved in C:\Users\xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:R33i697tBN23kEUcECN86Esf4yY7nfEg0LbbKx+r+K4 xxx@xxx
The key's randomart image is:
+---[RSA 2048]----+
|          ...++o.|
|           +..o. |
|          + + .. |
|         o * =o..|
|        S = *o+ +|
|         . = B..o|
|            X.=..|
|          .* =o+ |
|         E+=B+o.o|
+----[SHA256]-----+

3つ入力を求められるので入力します。生成する鍵のファイル名と、パスフレーズとその確認です。

ファイル名は未入力(デフォルト)でよいです。パスフレーズも未入力でOKです。もちろん必要に応じて設定すればよいです。

生成されるファイルは(デフォルトだと) id_rsa.pubid_rsa です。拡張子「.pub」のファイルが公開鍵です。これをGitHubに登録することでSSHを使った通信ができるようになります。

GitHub に公開鍵を登録する

GitHubの設定ページから SSH and GPG keys のページを開きます。

https://github.com/settings/keys

New SSH Key ボタンから鍵を追加するページを開きます。

ここに先ほど生成した拡張子「.pub」のファイルの中身をコピーして貼り付けます。

Add SSH key ボタンを押下して登録します。これでGitHub上での設定は完了です。

あとはSSHで接続できるかどうか確認してみましょう。

SSH の確認

ssh -T git@github.com でSSH接続をGitHubに対して実行できます。以下のようにレスポンスがあれば正しく設定されています。

$ ssh -T git@github.com
Hi mntm0! You've successfully authenticated, but GitHub does not provide shell access.

鍵の名前をデフォルトから変更している場合

鍵のファイル名をデフォルトから変更している場合、つまり「~/.ssh/id_rsa」ではない場合、うまくいきません。

$ ssh -T git@github.com
git@github.com: Permission denied (publickey).

上記のようなレスポンスになります。

これは、SSH接続の際「/.ssh/id_rsa」、「/.ssh/id_dsa」、「~/.ssh/identity」しかデフォルトでは見にいかないため、生成した秘密鍵を使ってくれていないためです。

SSHの設定ファイル ~/.ssh/config を作成し、以下のように設定してください。

Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/id_git_rsa
  User git

これはホストGitHubに接続する場合に、使用する鍵ファイルを指定する設定です。上では ~/.ssh/id_git_rsa を使用するように設定しています。

以上。

Gitカテゴリの最新記事