0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHubでSourceTreeのPAT認証が失敗する問題の解決方法(個人とOrganizationそれぞれ)

Last updated at Posted at 2025-05-02

概要

GitHubのリポジトリへSourceTreeからアクセスする場合に、OAuthだと操作の度にアカウント選択画面が出て不便です。そのためPATを発行して認証しようとしたのですが、SourceTree(Windows)でPATを入れても認証失敗してしまい、なかなか上手く行きません。けっきょく、個人ユーザーの認証とOrganizationの認証それぞれで別の解決方法が必要になりました。それを紹介します。ちなみにPAT以外でも解決できたのでそれも補足します。

最初に結論まとめ

個人ユーザーのリポジトリ

PAT発行時に、Account permissionsのEmail-AddressのRead権限を割り当てる必要があります。それで解決です。

Organizationのリポジトリ

SourceTree自体では解決できませんでした。Cloneする時にリモートリポジトリのアドレスに次のようにPATを含めることで、ローカルリポジトリに認証情報を残すことで解決はできます。

https://<ユーザー名>:<PAT>@github.com/<YourOrganization>/<YourRepository>.git

ただしこれはローカルリポジトリへコマンドを打てばPATが見えてしまうので、用途に求められるセキュリティ次第だと思います。

Basic認証

PATとは別の話ですが・・・設定画面でOAuth認証を登録せず、認証情報が無い状態でClone等からアクセスしてBasic認証すれば、何度もダイアログが出てくる問題は解決できました。

説明

上手く行かなかったこと

GitHubのOrganizationで管理しているPrivateリポジトリへ、SourceTree(Windows)からアクセスしたいことって、ありますよね。ないという幸運な人はたぶんこの記事をスキップしてもらってOKです。

SourceTreeの設定画面からOAuthで登録すると、こういうダイアログで登録することになります。
image.png

これ自体は問題ないのですが、選択を記憶してくれないのか、push,fetchなどGitHubのアクセスが必要な操作をする度にこのウインドウが出てきます。これはけっこう手間です。

他のもっと手間の掛からない方法はないのかと模索したところ、PATを発行してSourceTreeへ登録するしかなさそうです。※後で書きますが、Basic認証での解決方法もありました

PATの手順は色々なWebサイトで紹介されているのでそれに従って

  1. GitHubで新しい方の「fine-grained personal access token」を作成
  2. パーミッションはリポジトリの「Contents」のRead/Writeを許可
  3. SourceTreeの設定画面の認証でこれを入力

という手順で簡単に・・・ダメでした。
image.png

個人ユーザーのPAT

個人ユーザーのPATについては、さらに「Account permissions」の「Email-Address」のRead権限を追加したら、同じ操作で認証成功しました。

そういう手順が必要だという情報は見かけなかったのですが、Atlassianのフォーラムで「user情報の読み込みが許可されているか」という一言があったので気付きました。

しかしこれでは、個人ユーザーで所有しているリポジトリにしかアクセスできません。OrganizationのリポジトリにアクセスするにはOrganizationのPATが必要です。

OrganizationのPAT

同じように解決できるかと思いましたが、ダメでした。試しに全ての権限をRead許可しても結果は変わらないので、こちらはパーミッションの問題ではないようです。記事を書いておいてなんですが、SourceTreeで認証を通す方法はまだ見つけられていません。

代わりに、SourceTreeではなくローカルのリポジトリ側で解決する方法を見つけました。

Cloneする時のURLに次のようにしてユーザー名とPATを含めることで、PATで認証を通すことができます。

https://<ユーザー名>:<PAT>@github.com/<YourOrganization>/<YourRepository>.git

例えばhttps://contoso/rep.gitを使いたい場合は、git clone https://username:github_pat_xxxxxxxxxxxxxxx@github.com/contoso/rep.gitといった感じです。

この方法ならば、SourceTreeかどうかなどのgitクライアント側の事情に関係なく、このリポジトリを操作する時は認証が通ります。

この場合はCloneしたローカルのリポジトリに情報が記録されますので、git remote -v等でも値を見ることができます。セキュリティ的にいまいちな感じもありますが、ローカルにだけ保存されるものではありますし、万一の場合はPATなので失効させることもできますから、これで許容可能というケースも多いと思います。

おまけ:OAuthでの認証の別案

SourceTreeの設定画面から認証情報をOAuthで登録すると、前述のように何度もダイアログがでてきます。

認証情報を登録せず、Clone画面などから直接アクセスすると、次のようなログイン画面がでてきます。こちらでログインすればBasic認証として登録され、何度もダイアログが出てくる問題は解決するようです。PATについてはここまでに書いたとおりですが、PATを使わない解決策としてはこれで良さそうです。

image.png

まとめ

SourceTreeへのPATの設定程度ならあちこちに情報があるし簡単だろう、と思ったら意外に手間取りました。欠点もあるもののいちおう解決策にたどり着いたので、同じ事に引っかかっている人がいたら参考になると嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?