git lfsコマンドでPermission denied (publickey).: exit status 255が出たときの対処法

何回か遭遇したのでメモしておく。

 

 

[遭遇した問題と発生したエラー]

利用している環境は以下の通り。

OS:Windows 10

git:2.34.0.windows.1

 

リポジトリクラウド版Bitbucketでホスティングしており、Git LFSを有効化し、pdfファイルなどを保管している。

エクスプローラー上でGit管理されているpdfファイルを見ると、ファイルサイズが1kbとなっており、中身は次のようになっていた。

version https://git-lfs.github.com/spec/v1
oid sha256:(ファイルのハッシュ値)
size XXXXXX

 

git lfsで管理しているファイルが取得できていないだけかな、と思い、git lfs pullしたところ、次のエラーが発生した。

> git lfs pull
batch request: git@bitbucket.org: Permission denied (publickey).: exit status 255
error: failed to fetch some objects from 'https://bitbucket.org/myteam/myrepository.git/info/lfs'

 

[対処法]

SSHキーの設定などを見直したが、LFS管理されていない通常のソースコードなどは問題なくgit pullできており、問題ないと判断した。こちらの記事にある、秘密鍵がロードされていない、には該当しなさそうだった(ssh-add -l -E sha256コマンドで確認はしていないが...)。

engineer-ninaritai.com

 

色々ググった結果、こちらのissueのコメントが役に立った。

github.com

 

start-ssh-agentコマンドを実行してからgit lfs pullを実行したら解決した、とある。その通りに実行したところ、問題なくpdfファイルを取得しファイルの中身を閲覧できた。

> start-ssh-agent
Removing old ssh-agent sockets
Starting ssh-agent:  done
Enter passphrase for /c/Users/kdnakt/.ssh/id_ed25519:
Identity added: /c/Users/kdnakt/.ssh/id_ed25519 (メールアドレス)

Microsoft Windows [Version 10.0.19043.1586]
(c) Microsoft Corporation. All rights reserved.

> git lfs pull
Downloading LFS objects: 100% (16/16), 158 MB | 10 MB/s

 

[まとめ]

  • gitでPermission deniedエラーが出たときはSSHキーの登録をまず確認する
  • 次に、ssh agentに秘密鍵がロードされているかssh-add -l -E sha256コマンドで確認する
  • 最後に、start-ssh-agentコマンドでssh agentを再起動する