Отказано в доступе (publickey) при использовании Git от Nix - PullRequest
0 голосов
/ 27 мая 2018

Я установил Git через Nix (на Arch Linux ).

[gorre@uplink ~]$ uname -a
Linux uplink 4.16.9-1-ARCH #1 SMP PREEMPT Thu May 17 02:10:09 UTC 2018 x86_64 GNU/Linux
[gorre@uplink ~]$ nix-env -q
erlang-20.3.2
git-2.16.3
go-1.10.1
google-drive-ocamlfuse-0.6.25
nix-2.0.2

У меня есть файл конфигурации SSH, сохраненный в ~/.ssh/config:

[gorre@uplink ~]$ cat ~/.ssh/config 
# Bitbucket.org
Host bitbucket.org
#RSAAuthentication yes
IdentityFile ~/.ssh/bitbucket_id_rsa
IdentitiesOnly yes

Я на 100% уверен, что набор закрытых / открытых ключей верен.Я использую его все время в SmartGit, но когда я пытаюсь использовать Git через командную строку, я получаю эту ошибку:

[gorre@uplink erlang]$ git pull --rebase
sign_and_send_pubkey: signing failed: agent refused operation
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.

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

Есть ли способ сообщить Git (установленный через Nix)сослаться на мой ~/.ssh/config файл?


В качестве доказательства, это то, что происходит, когда я "проинструктирую" ssh-agent временно использовать мой открытый ключ (так что вы можете быть уверены, что у меня естьправильные права):

[gorre@uplink erlang]$ ssh-agent sh -c 'ssh-add ~/.ssh/bitbucket_id_rsa; git pull --rebase'
Enter passphrase for /home/gorre/.ssh/bitbucket_id_rsa: 
Identity added: /home/gorre/.ssh/bitbucket_id_rsa (/home/gorre/.ssh/bitbucket_id_rsa)
Already up to date.
Current branch master is up to date.

... после этого я могу летать некоторое время:

[gorre@uplink erlang_simple_cache]$ git pull --rebase
Already up to date.
Current branch master is up to date.

1 Ответ

0 голосов
/ 27 мая 2018

Обычно лучше отлаживать их как сбои ssh, а не как сбои git.Поставьте им диагноз ssh -v -v git@bitbucket.org.Вы должны получить ту же ошибку и больше диагностики для работы.Но у нас уже есть ключ, который нам нужен, sign_and_send_pubkey: signing failed: agent refused operation. Попытка гуглить это означает, что ssh-agent не может получить доступ к этому ключу .

IdentityFile говорит только о том, какой ключ попробовать, вместо того, чтобы пробовать все из них.Этот ключ еще должен быть доступен.Вот почему он работает после вас ssh-add, что делает ключ доступным для вашего ssh-агента.Добавление ключа через ssh-add - это правильное действие.

Если раздражает необходимость добавлять ключ при каждом входе в систему, тогда вы можете использовать цепочку для ключей для безопасного хранения фазы ssh-ключа.-phrases.Затем в следующий раз, когда вы войдете в систему, ваша цепочка для ключей запустит ssh-add для вас, используя вашу кэшированную цепочку для ключей.Брелки разные в каждой ОС. Вот инструкции для этого на ArchLinux .

...