SSH接続できるのにBitbucketからClone出来ない問題対応した話
はじめに
数年前から担当を続けている案件でbitbucketにリポジトリを持っているものがあるのですが、
直近でアサインされた案件用に今までと別のPCを支給されていて、2台を使い分けている状況でした。
しかし2台持って出社するのは重くて嫌なので、新しいPCでも使えるように環境構築やり直そうとしたところハマりました。
ハマリポイント
・macからwindowsへの移行
パスの書き方など困った。別記事にします(書くか未定)。
・bitbucketのアカウント権限
SSHは通るのにcloneできなかった。今回これについて扱います。
BitBucketからCloneするには
私は旧PCからはSSH秘密鍵さえ持ってくればそれで移植できると思っていました。
私の場合はwindowsのユーザ名が全角日本語のため、SSH接続も非常にハマったのですが、それは一旦おいておきます。
紆余曲折あってSSH -T は通るようになりました。
$ ssh -T git@bitbucket.org
authenticated via ssh key.
You can use git to connect to Bitbucket. Shell access is disabled
にもかかわらずgit cloneできません。
色々調べていると、接続関係ではなく、bitbucketのサイト内権限がないのでは?という考えに至りました。
しかし、私はbitbucketは秘密鍵から情報を得て本人確認していると思っていたので、自分の作ったリポジトリで、今現在pushできる鍵を持ってきて、それで接続できているのになぜ?となりました。
結論としてはgit cloneする時に、メールアドレスが送信されているので、そのメールアドレスとbitbucket内のアカウント情報を照らし合わせて、権限をチェックされていました。
公開リポジトリならcloneできるか試す。
もし、以下のチェックを外して、cloneできるならこの問題だと思います。
左メニューから「リポジトリの詳細」を選ぶ
プライベートリポジトリのチェックを外してsave changeボタンを押下する。
SSH接続ができているなら権限に関係なくこれでcloneできます。
出来ないならもっと前の手順で間違えています。
bitbacketにチェックされているメールアドレスの確認方法
git config --global --list というコマンドをgit bashに打ち込むと以下のように現在どのメールアドレスでbitbacketのリポジトリにアクセスしようとしているかが判明します。
$ git config --global --list
user.name=試験 太郎
user.email=taro.shiken@onewedge.jp
core.autocrlf=true
difftool.sourcetree.cmd=''
mergetool.sourcetree.cmd=''
mergetool.sourcetree.trustexitcode=true
bitbucketの左メニューで「repository permissions」を選択する。
参加させたい権限グループを選択。
すると以下のように許可しているユーザ名とアドレスが表示されるので、上記のgit configコマンドで表示されたメールアドレスがリストにあるか確認します。
ない場合は同じ画面の右上あたりにメンバー追加ボタンがあるので、こちらからgit configのメールアドレスへ招待状を送ります。
そのメールアドレスに招待を許可してください、といった内容のメールが届くのでAcceptを選べば権限リストに追加されます。
これでリポジトリをプライベートに戻してもcloneできるようになっているはずです。
おわりに
Gitのリポジトリエラーは非常にわかりづらく、一口に権限エラーといってもSSHキーなのか、リモートホスト側の独自権限なのか判別しづらいためハマリやすいです。
ChatGPTなどのAIもこの分野は大の苦手らしく全く正解のヒントを出してくれませんでした。
こういう場合は昔ながらのググって調べる。それでも出なかったら一度お茶でも飲んで閃くのを待ちましょう。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion