GitHubとSourcetreeをSSHで連携させたログと注意点など

GitHubとSourcetreeをSSHで連携させたログと注意点など

ブログにソースコードを埋め込みたい一心で、今更ながらGitHubに登録しました。

Gistでソースコードの共有をするだけでなく、Unityチュートリアルのリポジトリも共有したいなーと思ったので、普段使っているSourcetreeとGitHubを連携することに。

結論から先に言っちゃうと、Sourcetreeにアカウントを追加してSSHの鍵も生成してもらえばすぐに連携できたんだけど、自前で鍵を作ったものを使おうとして無駄に苦しみました。

今回の記事は苦闘の様子も一緒に残しているので、その点も含めてお楽しみください。

 

環境

macOS High Sierra(10.13)

GitHubとの連携はSourcetreeで行います。

GitHubへの登録を行った記事はこちら。

作成したリポジトリ

GitHub登録後、こんなリポジトリを作りました。Sourcetreeでこのリポジトリをクローンするのが今回の目的です。

リポジトリ
おぉーよく見る画面だ

 

Sourcetreeの設定

私はもともとSourcetreeをインストールしていたので、今回はインストールの部分は割愛。Atlassianのサイトからダウンロードできるので、まだの人はぜひ。

ユーザー名の設定

これまで個人の開発でローカルのgitにSourcetreeを使ってコミットしまくってたのですが、その設定も見直さないといけません。

Sourcetreeの環境設定を見ると、ユーザー名がOSに登録してる名前になっていました。これからソースコードを公開するにあたって本名が出るとちょっと恥ずかしいので、GitHubで登録したユーザー名に変えておきます。

念のためviで”~/.gitconfig”を開いて確認したらGihHubのユーザー名になってました。安心。

アカウントの追加

SourcetreeにGitHubのアカウントを追加します。まずは歯車アイコンをクリックして[アカウント]を選択しましょ。

SourceTreeの設定
歯車アイコンをクリック

 

アカウント、作ってなかったのね。[追加]をクリックして追加。

アカウントの追加
追加を選択

 

ホストは[GitHub]、認証方式は[OAuth]、プロトコルは……SSHかな。HTTPSとSSH、どちらを選ぶべきか? というのはしばしば議論されるネタですが、今回は自分で鍵も作っちゃってSSHで繋いでみましょ。……自分で鍵を作ることで後に大変なことになろうとは、この時全く気付いていなかったのです。

[接続アカウント]をクリックするとGitHubのログイン画面が表示されるので、登録したアカウント情報を入力します。保存するとアカウントが追加されました。

認証方式
HTTPSかSSHか、それが問題だ

 

SSHで接続するにあたって忘れちゃいけないのが、GitHubに公開鍵を置くこと。GitHubの[Settings] -> [SSH and GPG keys]から、公開鍵を登録します。

公開鍵の登録
公開鍵を登録する

 

接続確認

早速確認します。Sourcetreeで[リモート]を選択すると……おっと、あっさり表示されました。んじゃこの勢いでクローンしてみましょ。

リモートが表示される
おぉっGitHubのリポジトリだ

 

git@github.com: Permission denied (publickey).

fatal: Could not read from remote repository.

……あるぇー?

いやいや、ちゃんと公開鍵も登録しましたぜ、旦那。と思って公式のヘルプを確認。

要約すると、「ssh-agentに秘密鍵の場所を教えてくれよな! macOS Sierra(10.12)以降は設定ファイルもよろしくな!」とのこと。なんと。

ヘルプを参考に上記手順で設定。試しにターミナルから”ssh -T git@github.com“で接続してみたら、「認証OKだよ。でもシェルアクセスは勘弁な!(意訳)」と出たので認証はできてそう。

今度こそクローンだ!!

……。

git@github.com: Permission denied (publickey).

fatal: Could not read from remote repository.

ウボァー。

Sourcetreeのドキュメントを見ると、どうやらSourcetreeが自分で生成したssh_keyを使うみたい。アカウントの編集画面で[option]キーを長押しすると、[クリップボードにコピー]のボタンが[鍵を生成しました。]になるので、それをクリック。

するとSSHの鍵を新たに生成してくれます。パスフレーズも設定できるのでお好みで。私は入れる派。

鍵を生成後に設定を保存したら、GitHubに公開鍵を自動で登録してくれました。 なにこれ便利。

なお、Sourcetreeが生成する鍵は~/.sshに作成されますが、ssh-keygenのデフォルトであるid_rsaと被らないように名前を付けてくれるので競合せずに済みます。心遣いの塊かな?

……うん、ドキュメントはちゃんと読もうな!

鍵の生成
Sourcetreeが一晩でやってくれました

 

三度目の正直!!

……。

できた!

無事ローカルにクローンできました。Sourcetree上でも、Finderでも確認できました。良かった良かった。

クローン後のFinder
ちゃんとREADME.mdが確認できた

 

ローカルでソースファイルを適当に用意してプッシュ。GitHubでもファイルが確認できました。

GitHubでの確認
GitHubにもプッシュできた

 

まとめ

GitHubとSourcetreeの連携について、失敗談を含めてご紹介しました。

これでGistの機能でブログへの埋め込みもできるし、Unityチュートリアルのリポジトリも公開できそう。

今回得た教訓は、「公式のドキュメントはよく読もう」ということ。こんな当たり前のことをブログに書くとか恥ずかしいことこの上ないのですが、この記事を読んだあなたが同じ失敗をしないことがせめてもの救いです。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?