Неверная кодовая фраза 3 раза: git больше не запрашивает парольную фразу
Я хотел нажать на удаленный репозиторий git. Я набрал неверную кодовую фразу три раза. Я создал новый ключ ssh и зарегистрировал новый открытый ключ на сервере репозитория.
Но агент ssh не запрашивает парольную фразу. Он просто говорит мне:
Отказано в доступе (публикация). фатальный: не удалось прочитать с удаленного хранилище.
Пожалуйста, убедитесь, что у вас есть правильные права доступа и репозиторий существует.
Как я могу решить эту проблему в ubuntu?
Edit
Как было предложено, я попробовал ssh-add
[email protected]:~$ cd .ssh/
[email protected]:~/.ssh$ ls
config github_rsa github_rsa.pub id_rsa id_rsa.pub keys.zip known_hosts
[email protected]:~/.ssh$ ssh-add
Enter passphrase for /home/sadik/.ssh/id_rsa:
Identity added: /home/sadik/.ssh/id_rsa (/home/sadik/.ssh/id_rsa)
[email protected]:~/.ssh$
[email protected]:~/.ssh$ cd
[email protected]:~$ cd some/git-repo/
[email protected]:~/some/git-repo/$ git push -u bitbucket master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Я должен добавить, что этот репозиторий git был клонирован из github (не принадлежащий мне). Я хочу нажать его на моем частном репозитории на битбакете.
Я не знаю, может ли это привести к проблемам с разрешением, но моя первая проблема заключается в том, что ssh не запрашивает парольную фразу. Даже после перезагрузки или выхода из системы.
Edit
Как явственно предложил Jakuje, я ввел команду GIT_SSH_COMMAND="ssh -vvv" git push -u bitbucket master
, чтобы получить клиентские журналы. Это конец вывода:
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/sadik/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/sadik/.ssh/id_dsa
debug3: no such identity: /home/sadik/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/sadik/.ssh/id_ecdsa
debug3: no such identity: /home/sadik/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/sadik/.ssh/id_ed25519
debug3: no such identity: /home/sadik/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
По какой-либо причине он ищет pubkey id_dsa
, поэтому я скопировал id_rsa
в id_dsa
и попробовал его снова.
Теперь это подсказывает кодовую фразу! Но... когда я ввожу неверную кодовую фразу, он снова спрашивает меня. Когда я вхожу в правильный, он говорит, что разрешение отклонено.
$ git push -u bitbucket master
Enter passphrase for key '/home/sadik/.ssh/id_dsa':
Enter passphrase for key '/home/sadik/.ssh/id_dsa':
Enter passphrase for key '/home/sadik/.ssh/id_dsa':
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
- Что не так с разрешениями?
- Почему он ищет
id_dsa
вместо id_rsa
?
Ответы
Ответ 1
Все выглядит достаточно сложным, что, возможно, стоит начать все сначала:
- Удалите все ключи в ~/.ssh, которые вам не нужны (если есть ключи, которые вы хотите сохранить, подумайте о переносе их в другой каталог).
- Если существует ~/.ssh/config, убедитесь, что у него нет подозрительных строк.
- Если вы используете ssh-agent, удалите все ключи, используя
ssh-add -D
. Убедитесь, что клавиши ssh-add -l
отсутствуют. Если вы видите какой-либо вывод, вы страдаете от этой ошибки. Выйдите из системы, войдите в систему и убедитесь, что ssh-add -l
не производит вывод.
- Запустите
ls -al ~/.ssh
и убедитесь, что там нет ключей.
- Создайте новый ключ, используя
ssh-keygen
. Нажмите enter, когда он запрашивает, чтобы выходной файл использовал значение по умолчанию, затем введите парольную фразу дважды.
- Запустите
ls -al ~/.ssh
и убедитесь, что существуют id_rsa и id_rsa.pub.
- Удалить существующие ключи из Bitbucket.
- Добавьте содержимое файла ~/.ssh/id_rsa.pub в Bitbucket.
- Проверьте соединение с помощью
ssh -T [email protected]
. Если он терпит неудачу, опубликуйте вывод ssh -vvv [email protected]
.
- Убедитесь, что команды git работают.
Почему он ищет id_dsa
вместо id_rsa
?
SSH пробует несколько ключей, пока не найдет тот, который работает. Он попытался id_rsa
, ключ был отклонен, поэтому он попытался выполнить id_dsa
.
Кредит @Leon для упоминания ssh-add.
Ответ 2
Я забыл кодовую фразу и много раз ошибался. Поэтому я создал новую.
Я читал, что, поскольку у вас был ключ, который работал, вы создали новый, и вам интересно, почему он не работает.
Вам нужно скопировать открытый ключ на сервер authorized_keys
.