GitHubとSourcetreeをSSHで連携させたログと注意点など
- 2018.04.08
- 開発
- GitHub, Sourcetree
ブログにソースコードを埋め込みたい一心で、今更ながら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のアカウントを追加します。まずは歯車アイコンをクリックして[アカウント]を選択しましょ。
アカウント、作ってなかったのね。[追加]をクリックして追加。
ホストは[GitHub]、認証方式は[OAuth]、プロトコルは……SSHかな。HTTPSとSSH、どちらを選ぶべきか? というのはしばしば議論されるネタですが、今回は自分で鍵も作っちゃってSSHで繋いでみましょ。……自分で鍵を作ることで後に大変なことになろうとは、この時全く気付いていなかったのです。
[接続アカウント]をクリックするとGitHubのログイン画面が表示されるので、登録したアカウント情報を入力します。保存するとアカウントが追加されました。
SSHで接続するにあたって忘れちゃいけないのが、GitHubに公開鍵を置くこと。GitHubの[Settings] -> [SSH and GPG keys]から、公開鍵を登録します。
接続確認
早速確認します。Sourcetreeで[リモート]を選択すると……おっと、あっさり表示されました。んじゃこの勢いでクローンしてみましょ。
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上でも、Finderでも確認できました。良かった良かった。
ローカルでソースファイルを適当に用意してプッシュ。GitHubでもファイルが確認できました。
まとめ
GitHubとSourcetreeの連携について、失敗談を含めてご紹介しました。
これでGistの機能でブログへの埋め込みもできるし、Unityチュートリアルのリポジトリも公開できそう。
今回得た教訓は、「公式のドキュメントはよく読もう」ということ。こんな当たり前のことをブログに書くとか恥ずかしいことこの上ないのですが、この記事を読んだあなたが同じ失敗をしないことがせめてもの救いです。
ゲーム開発の攻略チャートを作りました!
-
前の記事
GitHubに登録してソースコードを共有しやすくする 2018.04.08
-
次の記事
【第3回】斜方投射でボールを打ち出してみるUnityチュートリアル 2018.04.09
コメントを書く