GitHubとssh接続するための設定手順を秘密鍵・公開鍵の作成から解説

自分のパソコンから GitHub に ssh 接続する方法はどうしても忘れがちになってしまうので、いまいちど備忘録として残しておきたいと思いました。新規でパソコンを購入したときやOSをクリーンインストールした後などに設定する GitHub に ssh 接続するための手順を示します。

ここでは GitBash がインストールされている前提で話を進めます。Windows で Git をインストールするときに一緒にインストールされるBashになります。Linux で用いる標準 Unix コマンドが同梱されるため、Linux や Unix と同等の操作が可能です。

1.公開鍵・秘密鍵を作成する

GitHub に対して ssh 接続をするには、公開鍵と秘密鍵を生成する必要があります。秘密鍵は外部には公開してはならない秘密の鍵のことを指し、公開鍵は相手に送っても大丈夫な鍵です。公開鍵と秘密鍵はペアで作成され、アクセスの時など相手を認証するときに必要なものとなります。

秘密鍵は自分で保持しておき、公開鍵を GitHub に登録しておいて、ssh 接続した際に秘密鍵と公開鍵を確認して、通信に問題ない相手であるかを認証するために必要となります。まずは秘密鍵・公開鍵を作成します。

.ssh フォルダに移動する

sshで使用する鍵を保管するためのフォルダまで移動する必要があります。ルートにある隠しフォルダの .ssh に移動します。

$ cd ~/.ssh

この時に以下のようなメッセージが返ってきた場合は .ssh フォルダが存在していないので新たに作成する必要があります。

$ bash: cd: /c/Users/hirof/.ssh: No such file or directory

.ssh フォルダが存在しない場合は以下のコマンドでフォルダを作成し、ls コマンドと -a オプションでディレクトリが作成されたかを確認しましょう。

$ mkdir ~/.ssh
$ ls -a

.ssh フォルダの作成が確認できたら、最初に使用した cd コマンドを使って .ssh フォルダに移動しましょう。

秘密鍵・公開鍵を作成する

.ssh フォルダまで移動出来たら、以下のコマンドで鍵の生成を行います。

$ ssh-keygen -t rsa

入力すると以下のようなメッセージが返ってきます。何か聞かれても3回エンターキーを押せば、id_rsaとid_rsa.pubの2つの鍵が生成されるので特に気にしなくても良いかと思います。名前を指定した公開鍵と秘密鍵の生成も可能ですが、以下に示すのは名前等を付けずに鍵を生成したサンプルになります。

$ ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

2.GitHubに公開鍵を通知する

ssh-keygen コマンドを使用することで、二つの鍵が作成されます。id_rsa と id_rsa.pub の二つが生成されますが、この二つのうちで公開鍵となるのが id_rsa.pub の方になります。

公開鍵をコピーする

この公開鍵を GitHub に登録しておくことで、Bash を使って相互に通信できるようなります。とにかく、まずは以下のコマンドを使用して、作成した公開鍵をクリップボードにコピーしておきます。

$ clip < ~/.ssh/id_rsa.pub

GitHub に ssh key を登録する

接続したい GitHub アカウントのページを開き、設定画面にある「SSH and GPG Keys」メニューを選択して登録画面を開きます。画面の右側にある「New SSH Key」ボタンで、公開鍵を登録するための画面を開くことができます。

タイトルと鍵を設定する入力画面が表示されたら Title と Key を入力したら「Add SSH Key」ボタンをクリックして登録します。タイトルは適当でOKです。Key は先ほどクリップボードにコピーした内容を張り付けます。

GitHub で ssh key の登録が完了したら GitBash を開いて、以下のコマンドを入力することで接続状態を確認することができます。

$ ssh -T git@github.com

上記のコマンドに対して以下のようにかえってきた場合は、特に気にせずに yes を押して続けます。

$ Are you sure you want to continue connecting (yes/no/[fingerprint])?

最後に以下のメッセージが表示されれば ssh接 続の設定手順は完了となります。

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

あとはこれまで通り GitHub からクローンしたり、pull や push することが可能となります。