GitHubで作ったリポジトリをSourceTreeでクローンできないとき【Ver. 2.5.5】

※この記事は https://kunosu.qrunch.io/entries/jCmqzabfzy0A0nmm に移動しました。

---

「GitHubにリポジトリを作ったぞ～さっそくSourceTreeでクローンするぞ！」と意気込むが、

![0_Error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316183/83a65246-d911-c763-04e0-c74c8612e972.png "エラー画面")

「なにこれ……」となり解決するのにだいぶ時間がかかったので解決方法を記録。

※Windows版 SourceTree のバージョンが**2.5.5**のときの情報です。

## エラーの原因

GitHub と SourceTree の間で通信する際、「SSHキー」という鍵でファイルを暗号化する必要があります。
SourceTree をインストールしたばかりのときはその鍵がないので通信ができず、エラーになっていました。

というわけで、SSHキーを作り、GitHub と SourceTreeに「この鍵で暗号化してね！」と教えることでクローンができるようになります。

## 手順

### SourceTreeでSSHキーを生成

1. SourceTreeを起動します。
1. メニューの「ツール」→「SSHキーの作成/インポート」をクリックして「PuTTY Key Generator」ウィンドウを出します。<br>
	![SourceTreeの「PuTTY Key Generator」ウィンドウ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316183/6387463f-23c0-e523-f522-0bcaa448f7fd.png "「PuTTY Key Generator」ウィンドウ")
1. 一番下の「Parameters」を次のように変更します（上記画像と同じならそのままでOK）。
	- Type of key to generate: RSA
	- Number of bits in a generated key: 2048
1.  「Actions」の「Generate」をクリック
1.  緑のバーが出るので、**ウィンドウの中**でマウスを適当に動かします。<br>
	![緑のバーがいっぱいになるまでマウスをぐるぐる](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316183/95c5164e-9e5e-8a81-bcc5-b721ccc15277.png "緑のバーがいっぱいになるまでマウスをぐるぐる")
	- バーの上にある "Please genarate some randomnss by mobing the mouse over the blank area." に書いてあるように、マウスの座標を乱数として鍵を生成しています。
	- 英語を読もうとせず「生成に時間がかかるんだろうな～」と1時間放置したのは私ですorz
1.  緑のバーがいっぱいになると鍵の生成が完了します。<br>
	![SSHキーの生成完了画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316183/6897cf51-9029-c200-eaf7-08e1fbc653d9.png "SSHキーの生成完了画面")
	- 一番上の黒塗りの部分に公開鍵が表示されます。
	- 「Key Comment」はそのまま鍵の名前みたいなものです。
		- 分かりやすいのにしてもいいですし、デフォルトのままでもいいです。
	- 「Key passphrase」と「Confirm passphrase」はパスフレーズです。入力するとプッシュやフェッチの度にパスフレーズを入力することになり、面倒になるため空欄のままでいいです。
1. 公開鍵をGitHubに登録するため、メモ帳などにコピペしておきます。
1. 「Save private key」をクリックし、任意の場所に保存します。
	- 拡張子：*.ppk

### GitHubに公開鍵を登録

1. [GitHubの設定画面](https://github.com/settings/keys)にアクセスします。
1. 右上の緑のボタン「New SSH Key」をクリック。
1. 入力画面に移るので、下記を入力します。
	- 「Title」: 分かりやすい名前をつけます（ここでは「Key Comment」と同じにしました）
	- 「Key」: SourceTreeで生成した公開鍵をコピペします。
1. 「Add SSH Key」をクリック。

### SourceTreeに秘密鍵を登録

1. SourceTreeの「ツール」→「SSHエージェントを起動...」をクリック
	- 一見何も起こりませんが大丈夫です。
1. **タスクバー**に「帽子を被ったパソコンのようなアイコン」が出ているので、タブルクリック<br>
	![帽子を被ったパソコンのようなアイコン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316183/8d5bc89f-635b-c3a1-bbda-0452dce4c763.png "SSHエージェント")
1. 「Pageant Key List」ウィンドウが出るので「Add Key」をクリック
1. 先程保存した秘密鍵(*.ppk)を選択します。
1. 「開く」をクリック

これでクローンの準備ができました。

### GitHubからリポジトリのアドレス取得

1.  クローンしたいリポジトリのwebページを開きます。
	- 「`https://github.com/ユーザー名/リポジトリ名`」の形式になっているURLです。
1.  右の緑のボタン「Clone or download」をクリック
1.  「Clone with SSH」と書かれていることを確認して「`git@github.com:ユーザー名/リポジトリ名`」となっている部分をコピー
	- 「Clone with HTTPS」の場合はすぐ右隣の「Use SSH」をクリックで「Clone with SSH」に変更されます。

### SourceTreeでクローン

1. SourceTreeのタブの「+」ボタンで「New tab」を開きます。
1. 左から3つ目の「Clone」をクリック。
1. 上から1つ目の入力欄に先程GitHubでコピーした文字列を貼り付けます。
1. 「これはGitリポジトリです」と表示されることを確認
	- 表示されない場合、コピペし直す、SSHエージェントをもう一度起動してみるなどを試す
1.  2つ目の入力欄にパスを指定します。
	- これがローカルリポジトリになります。
	- 基本的にはデフォルトのままで大丈夫です。
	- Dドライブだったり既にファイルが入っているフォルダだとエラーになります。
1. 3つ目の入力欄へSourceTreeのタブに表示される名前を設定します。
1. 「クローン」をクリック

## やっておくべきSSHエージェントの設定

以上の方法でクローンはできますが、このままではプッシュ・プルをするときに毎回秘密鍵を読み込ませる必要があります。
面倒なので下記の設定を行います。

1. SourceTree メニューの「ツール」→「オプション」で「オプション」画面を表示します。
1. 「全般」タブの中央「SSH クライアントの設定」の各項目を次のようにします。
	- SSHキー: 秘密鍵が保存されている場所のフルパス
	- SSH クライアント: PuTTY/Plink
	- 「SourceTree起動時にSSHエージェントを起動」にチェック
1.  「OK」をクリック

### SSHエージェントは常駐させること！

上記の設定でSourceTreeを起動するとSSHエージェントが起動するようになりましたが、
間違えてSSHエージェントを終了させても再起動はしてくれません。
もう一度起動させるには「ツール」→「SSHエージェントを起動...」から行えます。