🦀

1PasswordでGitHubのssh鍵を管理している際のcargoでのつまづきポイント

2023/11/08に公開

自分はGitHubのssh鍵を1Passwordで管理しているのだが、Rustプロジェクトのビルド時に依存しているリポジトリのダウンロードに失敗してしまった。

Caused by:
  failed to authenticate when downloading repository: ssh://git@github.com/***/***.git

  * attempted ssh-agent authentication, but no usernames succeeded: `git`

  if the git CLI succeeds then `net.git-fetch-with-cli` may help here
  https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli

Caused by:
  no authentication methods succeeded

cargoのログが丁寧に解説してくれているとおりで ssh-agent を使おうとして失敗しているため git コマンドを利用するよう設定すれば良い。

具体的には ~/.cargo/config.toml に以下の記述を追加すればOK。無ければ作る。

[net]
git-fetch-with-cli = true

ちなみに config.toml はいろんな場所に置けるのでスコープを切りたいときは適当な場所に配置することもできるが、この設定に関してはグローバルであって何の問題もないと思うので自分は ~/.cargo/ に置いている。
その他の有効なパスに関してはThe Cargo Book / Configuration / Hierarchical structureを参照すると吉。

Discussion