概要
Windows+SourceTree+Githubの認証は様々ありますが、一番安定するのはこのパターンだと思います。
- Windows10
- SourceTree v3.3.9
SourceTreeのGithub認証設定の確認
Githubで普通にログイン出来る環境でSourceTreeでツール→オプション→認証
が以下のように
- 認証:OAuth
- プロトコル:SSH
そうでない場合は以下の設定をします
Putty Key GeneratorでSSHの公開鍵と秘密鍵のペアを生成
SourceTree上でツール→SSHキーの作成/インポート
Putty Key Generatorが立ち上がるので Generateを選ぶ
生成されたらKey PassphraseとConfirm Passphraseに自分で決めたパスワードを入力しておいて
「Save Public Key」と「Save Private Key」でそれぞれ公開鍵と秘密鍵のペア鍵ファイルを適当なディレクトリに保存する
OpenSSH公開鍵の保存
そして赤で囲った部分も別のtxtファイルとして適当なディレクトリに保存する(OpenSSHの公開鍵としてGithub上で使います)
つまり Putty Key Generator 経由で3個のファイルを生成してします。
- Putty秘密鍵 (id_rsa_Github_YourName.ppk みたいな*.ppk )
- Putty公開鍵 (id_rsa_Github_YourName.pub みたいな*.pub)
- OpenSSH公開鍵 (id_rsa_Github_YourName_OpenSSH.txt みたいな普通のテキストファイルでOK)
Github上で公開鍵を登録
https://github.com/settings/keys
https://github.com/settings/keys
にブラウザでアクセスして「New SSH Key」をして、適当なタイトルをつけて、KeyのところにOpenSSH公開鍵の保存 で保存したテキストの内容をコピーして「Add SSH Key」で登録します
(これでGithub側に、さっきPutty Key Generatorで生成したあなたの公開鍵、秘密鍵のペアに相当する認証が通るようになります)
(GithubはPuttyで生成した公開鍵 .pub を認識できないため、OpenSSH用の公開鍵形式を使います)
最後にSourceTreeの認証をSSH経由にして、生成した鍵を使う
再度SourceTree上でツール→SSHキーの作成/インポート
を選んでPutty Key Generatorが起動したらLoadをして ppk (先ほど生成した秘密鍵の方)を設定します。
SourceTree上の認証をSSH+OAuth経由に設定して認証できることを確認する
これで当初の目的が達成できました。
生成したputtyの秘密鍵、puttyの公開鍵、OpenSSHの公開鍵は紛失しないようにしましょう(正確には、紛失したときはGithub上ですぐにKeyをRevokeするようにしましょう)
Q&A
なぜHTTPS+Token認証はダメなのか
プライベートリポジトリ+Git Submoduleのリポジトリ構造になったときに、HTTPSだとSubmodule再帰のチェックアウトに失敗するため
なぜBasic認証はダメなのか
リポジトリの設定でBasic認証が不可になっている場合、チェックアウトなどに失敗するため(そして仕事のプライベートリポジトリは往々にしてセキュリティ的に不可になっています)
Githubリポジトリからのチェックアウト
Github上でCode→Clone→SSH(git@github~~~からはじまる )を選んでコピー
SourceTreeでクローンするときのリモートリポジトリurlに貼り付け