SourceTreeでGitにSSH接続するときの設定メモ(Windows)

GitLab&SourceTreeを使っていて、HTTP接続ならできるのに、SSH接続がなかなかできない…というトラブルに遭遇してしまったので、設定方法をメモしておきます。

(まだ自分のなかでもちゃんと理解できてないけどとりあえず手順だけ…)

1.Public&PrivateKeyのセットを作る

まずは、PuttyKeyGeneratorっていうアプリケーションを使って、秘密鍵&公開鍵のセットを使います。保存しておくディレクトリが必要なので、事前にどこかに用意しておきましょう。

※SSH接続を行う各アプリケーションから接続する先となるので、不具合が起きないように、ディレクトリ名はアルファベットで指定しましょう

2.PuttyKeyGeneratorでの操作

Generateボタンをクリックしてマウスをぐるぐる回していくと、新しいKeyが作成されます。
※パスワードは入れてもいれなくてもOK(セキュリティ上入れた方がいいけれど)

パスワードを入力したら、
Save PrivateKeyをクリックして、Keyを指定のディレクトリに保存します。
Save PublicKeyもクリックして、Keyを指定のディレクトリに保存します。

ここで注意。

PublicKeyで保存されるPubulicKeyの形式が、どうやらSECSH(ssh.com)形式なんですね。Keyをテキストエディタで開いてみて、テキストの冒頭が”—- BEGIN SSH2 ENCRYPTED PRIVATE KEY —-”となっていればSECSH形式です。

でもこの形式、GitlabでもSourceTreeでも使えません….
Putty形式またはOpenSSH形式をどこかに保存しておく必要があります。

そこで確認するのが、PuttyKeyGeneratorの一番上”Key”と表示された項目。
ここに、Putty形式のPublicKeyのテキストデータが出てきます。
タイトルには何故かOpenSSHと記載されているけれど、Keyの冒頭が”ssh-rsa”で始まっているので、Putty形式です。

このPutty形式のPublicKeyのテキストデータをコピペしてどこかに保存しておきます。
※この画面を閉じてしまうと、もう確認できなくなるので、閉じないように注意!
(確認できるのかもしれないけど確認方法がわからず…..)

ちなみに、PuttyKeyGeneratorの”Conversions”というメニューから、OpenSSH形式のKeyもエクスポート保存できるので、念のため保存しておきましょう。
これで、SECSH(ssh.com)形式、Putty形式、OpenSSH形式3つの形式のPublicKeyができましたね。混乱しないように、Key名でわかるようにして、秘密鍵と一緒に同じ場所に保存しておくことをオススメします。

※PuttyKeyGenでのKey作成はここを参考にしました。
https://nelog.jp/sourcetree-github-settings

※SSHについてはここを参考にしました。
puttygenで作成した鍵がGitHubやSSHで利用できない時の対応
http://qiita.com/pink/items/ada9fa6236594f8fc5e9

 

3.ローカルPCでのKey登録

ここが穴でした。どうやらPCにKeyの登録をしてあげる必要があるらしいのです。
Windowsで “Pageant” というアプリケーションを開いて、ここから、先ほど保存したPrivateKeyの方を登録します。

Add Keyを選択して、該当のKeyを選択すれば、それで登録完了です。

4.SourceTreeへのKeyの登録

SourceTreeのアプリケーションに、PrivateKeyの保存場所へのパスを登録してあげる必要があります。上のメニューから、ツール > オプションを開き、全般設定から「SSHクライアントの設定」を選択します。

SSHキーのパスのところに、1で作成保存したPrivateKeyのパスを登録します。
SSHクライアントの種類はPuTTYを選択しましょう。(これからGitにPutty形式で公開鍵を登録するため)

設定したらOKを押します。SourceTreeでのKey設定はとりあえずこれで終了です。

5.GitLabへのKeyの登録

SSH接続したいGitLabのアカウント設定の画面から、SSHのメニューを選択し、今度はPublicKeyを登録します。

先ほど保存した3種類のPublicKeyの中から、KeyPutty形式のテキストデータをコピーし、GitLab側の入力フォームにペーストしてAddします。名前は適当にわかるようにつけておけばOKです。

当たり前な話ですが、PC側&SourceTreeに登録してあるPrivateKeyとペアになっているPublicKeyを登録するようにきをつけてください。

6.接続テスト

1~5の設定で、SourceTreeからGitLabにSSH接続する準備ができました!
GitLabのプロジェクトを開き、git@~で始まる接続先をコピーしたら、SourceTreeで接続してみましょう。

SourceTreeを開き「新規/クローンを作成する」をクリックします。
接続先に、Gitプロジェクトの接続先(git@~ではじまるもの)を入力し、保存先のパスをクリックします。

すると、接続確認が開始されます。
ここで「これはGitレポジトリです」と表示されれば接続完了です!

保存先のパスに、ローカルサーバーで管理したいディレクトリを設定し、クローンしてみましょう。

とりあえず今回はここまで。
単なる自分用メモなので、キャプチャもないし全然まとまってないですが…わすれないようにね!