お知らせふだんはTwitterにいます

bitbucketにプッシュできなくなってテンパったことの顛末[解決済]

ぼっちバージョン管理といったらbitbucketですが、ある日、急にpushができなくなりました。

急にパスワードを求められる。

ん?おまえ、そんなことしたっけ。

パスワードを入力すると、ログインできねぇよと言われる。ナニコレ???

あれーなんかしたっけなぁ、と思い返すと、思い当たるフシしかない。
そういえば1週間くらい前、SSH(公開鍵認証)をよく知りもしないのに、ゴチャゴチャいじっていたら、その途中で息子(11ヶ月)が泣き散らしたり、台風24号がきたりして、テンパって記憶が飛んでいる。

ヤベェ、完全になんかしとる。

とりあえず、深呼吸して「公開鍵認証」について復習。

そのあと、bitbucketで、パスワード求められる系でググったらこれが出てきた。

鍵の設定したのにパスワードを求められるのは、http通信をしているからだそう。
わかるような、わからなんような。

とりあえず、解説通りに確認。

$ git remote -v

たしかにhttpsの通信になっている。そうか、鍵を設定したら、ここを切り替える必要があるのか。
説明の続きを読むと、SSHでいけるように、リモートポジトリのアドレスを設定変更する操作がでてきたのでその通りに行う。

$ git remote set-url origin git@bitbucket.org:[id or team-id]/[repository-name].git

bitbucketのID名と、リポジトリの名前入れりゃいいのね。

よしOK。
プッシュしてみる。

fatal: Could not read from remote repository.(←エラー)

なんでよ。

なんか別の悪いことしてたのかなぁと、エラー文で検索。

これにいきあたる。するとここに良いことが書かれている。bitbucketにも鍵認証の設定箇所が2種類あるらしい

  1. ユーザー認証用の鍵設定(ログイン的なやつ)
  2. リポジトリ認証用の鍵設定(リポジトリの権限的なやつ)

多分、おまえの設定、これがごっちゃになってるぜ、とのこと。

オーライオーライ。
天才ですわ、この回答者さん。

たしかに、そんな2種類あるなんてこと知らず、光に集まる昆虫がごとし、「鍵」って目についたところに公開鍵セットしたわ。

bitbucketのサイトにいって確認。
ユーザー認証したいはずなのに、全然関係ないリポジトリのところに鍵をセットしていた。

というわけで鍵の位置も修正。

OK!
プッシュしてみる。

fatal: Could not read from remote repository.

なんでよ。

ダメだよ。これテンパるパターンだよ。

その後、「source tree」がジェネレートしたsshのconfigがいけないとか(そういえばこないだ知り合いから「source tree」をすすめられて導入した)、SSHなるものをよくわからずに使っている人のための手引書とかをさまよいながら、どんどん混迷を深めていって1時間。

気づいた。
最初の「リモートポジトリのアドレス設定」を間違えていた。

git remote set-url origin git@bitbucket.org:[id or team-id]/[repository-name].git

これ。

これのgit@以降の部分。

git@bitbucket.org:[id or team-id]/[repository-name].git

これのカッコの部分。

[id or team-id]/[repository-name]

たとえば、ユーザーIDが「user」で、リポジトリ名が「repository」だったら、

git remote set-url origin git@bitbucket.org:user/repository.git

こうが正解。
しかし私はこう書いていた。

git remote set-url origin git@bitbucket.org:[user]/[repository].git

カッコつけたまま書いてたー。

リポジトリのアドレスちげぇよって言われてたんだ・・・。

普段からカッコつけてるのが裏目に出た。ダジャレだよ。

というわけで、カッコを外したらプッシュできました。よかったです。

今回は2つ同時に違ったんで余計にややこしかったんですね。

  • 鍵の設定場所が違った
  • リモートリポジトリの設定が違った

その上、カッコでミスってたので、カオスだわカオス。
小一時間大変な目にあいました。本当、脳みそ昆虫だと大変だわ。

bitbucketのSSHについてはこちらに書かれています。

シェアする
閉じる