githubへの接続をsshでする方法

2018.9.26

大まかな作業は、bitbucket での手順と同じです。

環境

ssh 鍵の作成

git-bash を使用して秘密鍵と公開鍵を作ります。

$ ssh-keygen -t rsa -C "mail@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/ユーザ名/.ssh/id_rsa): keykey
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in keykey.
Your public key has been saved in keykey.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX mail@example.com
The key's randomart image is:
+---[RSA 2048]----+
|    XXXXXXXXX    |
|     XXXXXXXXX   |
|      XXXXXXX    |
|       XXXXXXXXXX|
|      XXXXXXXXXXX|
|       XXXXXXXXXX|
|        XXXXXXXXX|
|      XXXXXXXX   |
|      XXXXXXX    |
+----[SHA256]-----+

対話型で質問して来ます。

生成するファイル名を入力します。ファイル名は好きなもので OK です。

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

鍵のパスワード。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスワードを指定すると鍵を使用するときにパスワードを尋ねられます。

パスワードを指定しなければ、パスワード入力無しで鍵を使用できるようになります。

コマンドが成功すると 2 つのファイルが生成されます。

keykey
keykey.pub

keykeyが秘密鍵、keykey.pubが公開鍵になります。

後ほど公開鍵の方を github へ登録します。

生成したファイルは、下記の場所に移動してください。

C:\Users\ユーザ名\.ssh\

github へ公開鍵を登録する

ブラウザで github へログインします。

ログインしたら、ユーザのアイコンをクリックして、下記のように画面を進みます。

[settings] > [SSH and GPG keys] > [New SSH key]

Title には適当な文字列を入力します。
作業する環境が複数ある場合はどのマシンの接続用なのか分かるようにしておくと良いでしょう。

key に先ほど作成した、keykey.pubの内容を貼り付けます。

テキストエディタでkeykey.pubを開いてコピー&ペーストで OK です。

貼り付けたら、[Add SSH key]をクリックして完了です。

ssh の設定

はじめに config ファイルを作成します。

作成する場所は、下記です。

C:\Users\ユーザ名\.ssh\config

ファイルを作成したら、エディタで開いて下記のように記述します。

Host github.com
  User git
  Hostname ssh.github.com
  Port 443
  IdentityFile "C:\Users\ユーザ名\.ssh\keykey"

編集するポイントは、秘密鍵をおいている場所を指定しているところです。

.pubがついていない方のファイルを指定してください。

  IdentityFile "C:\Users\ユーザ名\.ssh\keykey"

configファイルには複数の接続先を記述することも可能です。

github を併用する場合は下記のようになります。

Host github.com
  User git
  Hostname ssh.github.com
  Port 443
  IdentityFile "C:\Users\ユーザ名\.ssh\keykey"

Host bitbucket.org
  Hostname bitbucket.org
  User git
  Port 22
  IdentityFile "C:\Users\ユーザ名\.ssh\keykey"
  TCPKeepAlive yes
  IdentitiesOnly yes

シンボリックリンクの作成

git の ssh 接続設定にも同じ内容が必要になりますので、シンボリックリンクを作成します。

コマンドプロンプトを管理者権限で起動して下記のコマンドを実行します。

mklink "C:\Program Files\Git\etc\ssh\ssh_config" "C:\Users\ユーザ名\.ssh\config"

実行して下記のように表示されれば成功です。

C:\Program Files\Git\etc\ssh\ssh_config <<===>> C:\Users\ユーザ名\.ssh\config のシンボリック リンクが作成されました

接続テスト

次のコマンドを実行して、接続のテストを行います。

$ ssh -T git@github.com

初回は次のような質問が表示されますので、yes とタイプしてエンターを押してください。

Are you sure you want to continue connecting (yes/no)? yes

下記のように表示されれば接続 OK です。

Hi githubユーザ名! You've successfully authenticated, but GitHub does not provide shell access.