Что именно делает ssh-add?

15

Недавно я переустановил свой ноутбук и обнаружил, что «git clone» не работает. Я постоянно получаю Permission denied (publickey).ошибки.

Исправление описано на странице проблем SSH в GitHub : используйте, ssh-addчтобы сообщить SSH о ключе, который я хочу использовать для аутентификации на GitHub.

Мой вопрос: под капотом, что на ssh-addсамом деле делает?

Я собирался расширить мое понимание SSH на некоторое время, и это кажется хорошим поводом для начала :-)

Дункан Бэйн
источник

Ответы:

21

ssh-addдобавляет идентификаторы закрытого ключа (из вашего ~/.sshкаталога) к агенту аутентификации ( ssh-agent), чтобы агент ssh мог позаботиться о вашей аутентификации, и вы не вводите пароли на терминале.

Питер Джон Аклам
источник
Я буду честен, это смутило меня некоторое время. Я думал, что клиент ssh всегда использовал ключ в вашем ~/.sshкаталоге. Некоторые дистрибутивы делают эквивалент ssh-addавтоматически? Может поэтому я запутался?
Блонг
4
sshдействительно использует ключ в ~/.sshкаталоге, но если ключ защищен парольной фразой, эту парольную фразу необходимо ввести в какой-то момент. Если вы используете ssh-agentи ssh-add, вы вводите эту фразу один раз. В противном случае вы должны вводить парольную фразу при каждом использовании ssh. Обратите внимание, что если ключ не защищен паролем, вы можете использовать его sshбез запроса пароля.
Питер Джон Аклам
Может быть несколько ключей ssh, ~/.sshи это может быть более полезным, см. SO и документы по bitbucket
Фрэнк Нок
0

Основываясь на этой статье в github , иногда в некоторых дистрибутивах Linux, даже после того, как вы все настроили правильно, появляется эта ошибка:

Agent admitted failure to sign using the key.
debug1: No more authentication methods to try.
Permission denied (publickey).

И вы должны бежать, ssh-addчтобы решить проблему.

Sadegh
источник