Blog

bitbucketアクセス権がない。SSHエラー

ある日、このエラーがでました。

Forbidden
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

正しいアクセス権があることを確認してください。

…ということです。SSH鍵は登録してたと思うのですが、なぜ?と思い、
bitbucketで鍵を調べます。

左下の自分のアイコンから「Personal settings」→「SSH 鍵」
公開鍵は

ユーザーフォルダ/.ssh/id_rsa.pub

にあったので、id_rsa.pubの中身をコピペして鍵を新規追加しようとすると…

「その SSH キーは既に追加されています。」

やっぱり追加されてました。
ではなぜ繋がらないのかというと、

Bitbucketアカウントを複数もっていて、同じ鍵を使用しようとしたから。

アトラシアンのコミュニティにありました。

例えば他のBitbucketアカウントでSSH公開鍵を登録済みの場合は、ご利用のアカウントに対して同一の公開鍵を新たに登録し直すことはできません。

ATLASSIAN Community bitbucketからSSHでクローン出来ない

なぜアカウントを二つ持っているのかというと、自分用と会社用です。テレワークで会社用も同じPCを使うので、複数アカウントを使い分けるということになってしまったわけです。

解決方法

別名でもう一つ鍵を作ってその秘密鍵をロードします。
SSHで接続する際に、bitbucketがデフォルトで読みにいく秘密鍵のパスは「~/.ssh/id_rsa」「~/.ssh/id_dsa」「~/.ssh/identity」のいずれかですが、キー名を変えているので、ロード(add)する必要があるのです。

ここではhogegitという名前で作ります。

キーペア発行

ssh-keygen -t rsa -f ~/.ssh/hogegit

-fのあとにフォルダパス付きのファイル名で、鍵名を指定してキーペアを作ることができます。
パスフレーズを求められますが、必要なければそのままEnter。

この秘密鍵をssh-agentに登録

ssh-add ~/.ssh/hogegit

これで接続できるようになりました。
ちなみに、ロードされている鍵を確かめるコマンドは

ssh-add -l

末尾に鍵の「ユーザー名@host名」がついてるのでこれで確認できます。

両方同時には接続できない

id_rsaはbitbucketにとってもデフォルトのキーなので、ssh-addしていなくてもこの鍵を読みに行ってくれます。
ssh-add -l で「The agent has no identities.」と表示されても、接続はできます。

しかし、さっき作った他の鍵(hogegit)をaddしている場合はid_rsaキーでは繋がらなくなります。

hogegitをオフにする場合は

ssh-add -d ~/.ssh/hogegit

念の為 ssh-add -l でhogegitの鍵が表示されないのを確認します。

これでid_rsaキーに接続することができます。もちろんこの状態ではhogegitにはつながりません。

ssh-addはパソコンを再起動するとリセットされる

ssh-addで追加した秘密鍵はパソコンを再起動するとリセットされてしまいます。
起動するたびにssh-addをうたなければならない…というわけで、その手間をなんとかするために、configファイルを作るという方法があります。

…が、私の場合は複数アカウント必要で、とりあえず最初はid_rsaでよいので、このままいくことにしました。configは、ssh-addコマンドをうつのが面倒になってきたら設定しようと思います。

configに設定してコマンドを省略

…1週間後、早々にssh-addが面倒になって、configを作りました。

.ssh/config を作り、

Host hogegit
  HostName bitbucket.org
  User bitbucketのユーザーアカウント名
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/hogegit

これで、

ssh hogegit

だけでSSH接続できるようになりました。

おすすめの記事 recommend blog

新着 new blog

github