Help us understand the problem. What is going on with this article?

cargoでfailed to authenticateになった時の対処法

背景

気分転換にRustチュートリアルを始めてみたら初めての依存ライブラリー取得のところで以下のエラーが出て若干ハマったので対処法をメモしておく。

$ cargo build
    Blocking waiting for file lock on package cache
    Updating crates.io index
error: failed to get `rand` as a dependency of package `guessing_game v0.1.0 (/Users/xxx/rust/guessing_game)`

Caused by:
  failed to load source for dependency `rand`

Caused by:
  Unable to update registry `https://github.com/rust-lang/crates.io-index`

Caused by:
  failed to fetch `https://github.com/rust-lang/crates.io-index`

Caused by:
  failed to authenticate when downloading repository
attempted ssh-agent authentication, but none of the usernames `git` succeeded

Caused by:
  no authentication available

原因

cargoコマンドはデフォルトではssh-agentを使用して取得を試みるが、これがコケている。

解決法1: ssh-agentに鍵を登録する

こちらは正統派解決法で、普段使っている秘密鍵をそのまま登録すればOK。下記記事の手順通りにやればいいだけなので難しいことはないが解決法2と比べると若干めんどくさい。

ssh-agentを利用して、安全にSSH認証を行う

解決法2: コケた場合にOSのgitコマンドへフォールバックさせる

言うまでもないかもしれないが、前提条件としてgitコマンドが正しく動作していることが必要。

下記のオプションを入れるとssh-agentを使った認証にコケた場合、gitコマンドを使って取得を試みるように動作を変更することができる。この結果普段通り鍵認証を行うようになるので正しく認証完了しリポジトリを取得できるようになる。

※ファイルが無い場合は作成する

~/.cargo/config
[net]
git-fetch-with-cli = true

ワークアラウンド的なやり方だが、OSのgitコマンドと設定が共通になり多少楽な気がしたので今回私はこのやり方にした。

ダメだった解決法

エラーメッセージでググると以下のように書き換える記事がいくつか出てくるが、私の環境では解決できなかった。

~/.gitconfig
- [url "git@github.com:"]
+ [url "ssh://git@github.com/"]

参考文献

ryo-yamaoka
https://twitter.com/mountainhill14
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした