プログラミング

GitHubとSSHで接続できるようにする

GitHubを使っていて、

ローカルのターミナルからhttpではなく、gitで通信したい!というときは、

sshの設定が必要になります。

この記事では、手元のターミナルから、GitHubへsshで接続ができるようになるまでの設定を書いていきます。

いろんな記事で、設定方法が書かれていますが、自分用のメモとしてもこちらに残しておきます。

ssh鍵の作り方

GitHubとgit通信をするには、sshの設定が必要になってきます。

その際に、接続する方式として、公開鍵暗号方式といった認証方法を使用するのですが、こちらについては、僕もわからないことを調べる時によくお世話になっているこちらのサイトの記事がざっくりと説明してくれていますので、まずはさっと目を通しておきましょう。

 

ターミナルを開いた画面では、デフォルトで以下のような表示になっているかと思います。

user@localhost $ ~

 

こちらで、以下のコマンドを入力します。

$ mkdir -p .ssh

 

作成した.sshディレクトリへ移動

$ cd .ssh

 

ssh-keygenコマンドを入力して公開鍵と秘密鍵を作成します。

$ ssh-keygen -t rsa -b 4096 -C ""

 

(コマンドのオプションの解説)

-t オプションで、rsa方式で暗号化する鍵を作成することを明記します。

-b オプションで、作成する鍵のビット数を指定します。

こちらは指定しなくても2048ビットの鍵が作成されますが、セキュリティ的にも4096ビットで作成しておいたほうがいいかと思います。

-C オプションで、作成される公開鍵の一番最後に自分自身の「ユーザー名@ホスト名」が入力されないように””で囲って空白文字を入力します。

 

作成する鍵のビット数については、こちらの記事でGitHubに登録されている鍵の強度について調べてくれているので、興味のある方は見てみてください。

-C オプションは自分自身が作った鍵だと分かるようにしないといけない場合は、指定しないでください。

 

コマンドを入力すると以下のように表示されます。

$ ssh-keygen -t rsa -b 4096 -C ""
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/[ユーザー名]/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/[ユーザー名]/.ssh/id_rsa.
Your public key has been saved in /Users/[ユーザー名]/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wb8JdzAMRVDPGK1+8g5xn/TN/RYCjPz3dbVJ41QcUZc
The key's randomart image is:
+---[RSA 4096]----+
|        o==.   +B|
|       . o =.  E+|
|        + B.o   .|
|         =.=   +.|
|        S.= + = =|
|         ooB.= O=|
|          ++. = O|
|           ..  .o|
|           ..  ..|
+----[SHA256]-----+

 

デフォルトでは、鍵の名前は、

秘密鍵は「id_rsa」

公開鍵は「id_rsa.pub」

となっているのですが、もし名前を変更したければ、

Enter file in which to save the key (/Users/[ユーザー名]/.ssh/id_rsa):

と表示されている時に適宜「id_moto_rsa」などと入力してください。

 

passphraseは入力しなくてもいいかと思いますが、ここは個人個人の判断かと思います。

passphraseを入力するとこの鍵を使って通信した時に入力を求められるので、それが面倒といったケースもあるので、現場の方針に従ってください。

作成した.sshのディレクトリと鍵のアクセス権限を変更

作成した.sshのディレクトリと、秘密鍵のファイルのアクセス権限が適切にされていないとssh接続をした時に、アクセス権限を強くしてください!と怒られます。

 

なので、以下のコマンドで権限を変更します。

 

秘密鍵自体の変更。

$ chmod 600 鍵の名前

 

鍵をおいているディレクトリの権限変更。

chmod 700 ~/.ssh

 

 

GitHubへ公開鍵を設定する

GitHubのプロフィールページへアクセスして、以下の画像の「SSH and GPG keys」をクリックします。

SSHkeysという項目が表示されると思いますので、「New SSH key」をクリックします。

 

先程作成した公開鍵をviエディターなどで開きます。

$ vi ~/.ssh/id_rsa.pub

 

表示された文字列をコピペします。

 

.ssh/configの書き方

次に、githubアクセス用に~/.ssh/configを作成します。

 

$ vi ~/.ssh/config

 

以下の内容を追記して保存します。

コメントアウトの部分は消してください。

Host github.com #ここは、"github" だけではダメで、"github.com" まで書く!
  HostName github.com
  Port 22
  IdentityFile ~/.ssh/鍵の名前
  User git #ユーザー名は必ず "git"

接続のテスト

 

ここまで設定すれば、GitHubとsshで通信できるはずです。

以下のコマンドで確認します。

$ ssh -T git@github.com

 

ちゃんと設定されていれば、

Hi [GitHubの名前]! You've successfully authenticated, but GitHub does not provide shell access.

 

このように表示されるかと思います。

 

以上で、設定は終了です。

ABOUT ME
moto
約5年間勤めた公務員から転職しました。 日頃の学びをここにアウトプットしていきます。 御朱印集めと筋トレが好きです。