🔑

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

2020/09/27に公開

※この記事は、Qiitaに投稿した記事を一部変更したものです。
https://qiita.com/kunosu/items/9ccafcb3991a1db72d99


「GitHubにリポジトリを作ったぞ~さっそくSourceTreeでクローンしよう!」と意気込むが、
000_エラー画面.png
「なにこれ……」となり解決するのにだいぶ時間がかかったので解決方法を記録。

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

エラーの原因

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

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

手順

1. SourceTreeでSSHキーを生成

  1. SourceTreeを起動します。
  2. メニューの「ツール」→「SSHキーの作成/インポート」をクリックして「PuTTY Key Generator」ウィンドウを出します。
    001_「PuTTY Key Generator」ウィンドウ.png
  3. 一番下の「Parameters」を次のように変更します(上記画像と同じならそのままでOK)。
    • Type of key to generate: RSA
    • Number of bits in a generated key: 2048
  4. 「Actions」の「Generate」をクリック
  5. 緑のバーが出るので、ウィンドウの中でマウスを適当に動かします。
    002_緑のバーがいっぱいになるまでマウスをぐるぐる.png
    • バーの上にある "Please genarate some randomness by mobing the mouse over the blank area." に書いてあるように、マウスの座標を乱数として鍵を生成しています。
  6. 緑のバーがいっぱいになると鍵の生成が完了します。
    003_SSHキーの生成完了画面.png
    • 一番上の黒塗りの部分に公開鍵が表示されます。
    • 「Key Comment」はそのまま鍵の名前みたいなものです。
      • 分かりやすいのにしてもいいですし、デフォルトのままでもいいです。
    • 「Key pathphrase」と「Confirm pathphrase」はパスフレーズです。入力するとプッシュやフェッチの度にパスフレーズを入力することになり、面倒になるため空欄のままでいいです。
  7. 公開鍵をGitHubに登録するため、メモ帳などにコピペしておきます。
  8. 「Save private key」をクリックし、任意の場所に保存します。
    • 拡張子:*.ppk

2. GitHubに公開鍵を登録

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

3. SourceTreeに秘密鍵を登録

  1. SourceTreeの「ツール」→「SSHエージェントを起動...」をクリック
    • 一見何も起こりませんが大丈夫です。
  2. タスクバーに「帽子を被ったパソコンのようなアイコン」が出ているので、タブルクリック
    004_SSHエージェント.png
  3. 「Pageant Key List」ウィンドウが出るので「Add Key」をクリック
  4. 先程保存した秘密鍵(*.ppk)を選択します。
  5. 「開く」をクリック

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

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

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

5. SourceTreeでクローン

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

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

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

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

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

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

Discussion