Я новичок в Github, а Generating SSH Keys выглядят необходимыми. И об этом сообщил мой босс, поэтому мне нужно выполнить.
Я успешно создал SSH-ключ, но когда я собираюсь добавить его в ssh-agent
вот что происходит
Какая проблема?
Я новичок в Github, а Generating SSH Keys выглядят необходимыми. И об этом сообщил мой босс, поэтому мне нужно выполнить.
Я успешно создал SSH-ключ, но когда я собираюсь добавить его в ssh-agent
вот что происходит
Какая проблема?
Кажется, вам нужно запустить ssh-agent
перед его использованием:
eval `ssh-agent -s`
На этот вопрос был дан ответ в этом разделе: Не удалось открыть соединение с вашим агентом проверки подлинности
Я проверил все решения на этом посту и пост, указанный выше, и я не нашел решения, которое сработало для меня.
Я использую Git 1.9.5 Предварительный просмотр в Windows 7 со следующей конфигурацией: - Запустите Git из командной строки Windows - Оформить заказ в стиле Windows, зафиксировать окончание строк в стиле Unix
Я использовал консоль Git Bash 'для всех... И все было хорошо, пока я не попытался установить SSH-ключи. Документация GitHub говорит, что нужно сделать следующее (не запускайте эти команды, пока не закончите чтение сообщения):
Убедитесь, что ssh-agent включен:
Если вы используете Git Bash, включите ssh-agent:Если вы используете другое приглашение терминала, например msysgit, включите ssh-agent:# start the ssh-agent in the background ssh-agent -s # Agent pid 59566
# start the ssh-agent in the background eval $(ssh-agent -s) # Agent pid 59566
Теперь, конечно, я пропустил тот факт, что вы должны были делать то или другое. Таким образом, я несколько раз запускал эти команды, потому что команда ssh-add
не выполнялась, поэтому я вернулся к этому шагу и продолжал повторять снова и снова.
В результате получается один процесс Windows ssh-agent, который создается каждый раз, когда вы запускаете эти команды (обратите внимание на новый PID каждый раз, когда вы вводите эти команды?)
Итак, Ctrl
+ Alt
+ Del
и нажмите End Process
, чтобы остановить процесс ssh-agent.exe.
Теперь, когда все испорченные вещи из неудавшихся попыток будут очищены, я расскажу вам, как заставить его работать...
Запустите процесс ssh-agent.exe
eval $(ssh-agent -s)
И установите ключи SSH
ssh-add "C:\Users\MyName\.ssh\id_rsa"
* Откорректируйте путь выше с вашим именем пользователя и убедитесь, что расположение каталога * /. ssh находится в нужном месте. Я думаю, вы выбрали это место во время установки Git? Может быть, не...
Часть, которую я делал неправильно, прежде чем я понял это, не использовал кавычки вокруг местоположения ssh-add. Выше описано, как его нужно вводить в Windows.
В Windows вы можете использовать Запуск с одной из следующих команд.
Для 32-битных:
"C:\Program Files (x86)\Git\cmd\start-ssh-agent.cmd"
For-64 Bit:
"C:\Program Files\Git\cmd\start-ssh-agent.cmd"
Ситуация: приложение MVS2017 - Использование Git Bash в Windows 10 - Попытка подключения к хранилищу BitBucket.
Для ясности, когда вы устанавливаете Git для Windows (https://git-scm.com/download/win), он поставляется с утилитой Git Bash.
Итак, я нахожусь в "Git Bash" следующим образом:
[email protected] MINGW64 ~/source/repos/DoubleIrish (master)
$ git remote add origin [email protected]:Guiness/DoubleIrish.git
$ git remote -v
origin [email protected]:Guiness/DoubleIrish.git (fetch)
origin [email protected]:Guiness/DoubleIrish.git (push)
[email protected] MINGW64 ~/source/repos/DoubleIrish (master)
$ git push -u origin master
[...]
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Закрытый ключ настроен?
$ ssh -V
OpenSSH_7.7p1, OpenSSL 1.0.2p 14 Aug 2018
$ ls -a ~/.ssh
./ ../ known_hosts
Я вижу, что на данный момент мой файл закрытого ключа (id_rsa
) отсутствует. Поэтому я добавляю это: (примечание: создание пары закрытых и открытых ключей выходит за рамки моего ответа, но я могу сказать, что в Linux вы можете использовать для этого ssh-keygen
.)
$ ls -a ~/.ssh
./ ../ id_rsa known_hosts
ОК, давайте продолжим:
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-KhQwFLAgWGYC/agent.18320; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17996; export SSH_AGENT_PID;
echo Agent pid 17996;
$ ssh-add ~/.ssh/id_rsa
Could not open a connection to your authentication agent.
Чтобы решить эту проблему, я запускаю:
$ ssh-agent bash
А потом опять:
$ ssh-add ~/.ssh/id_rsa
Identity added: /c/Users/Mike.CORP/.ssh/id_rsa (/c/Users/Mike.CORP/.ssh/id_rsa)
Это сработало для меня. Надеюсь это поможет
Я тоже боролся с проблемой.
После ввода $ eval 'ssh-agent -s' с последующим $ ssh-add ~/.ssh/id_rsa
Я получил то же жалобу: "Не удалось открыть соединение с вашим агентом проверки подлинности". Тогда я понимаю, что на моей компьютерной клавиатуре есть две разные цитаты. Поэтому я попробовал ту же позицию, что и "~":
$ eval ssh-agent -s
$ ssh-add ~/.ssh/id_rsa
И это звучит так.
Я хотел бы улучшить принятый ответ
Недостатки использования .bashrc
с eval ssh-agent -s
:
Вот мой .bashrc
, который искоренит все недостатки
Поместите этот .bashrc
в свой домашний каталог (Windows 10: C:\Users\[username]\.bashrc
), и он будет выполняться каждый раз, когда открывается новый git-bash и ssh-add
будет работать как гражданин первого класса
Прочитайте #comments, чтобы понять, как это работает
# Env vars used
# SSH_AUTH_SOCK - ssh-agent socket, should be set for ssh-add or git to be able to connect
# SSH_AGENT_PID - ssh-agent process id, should be set in order to check that it is running
# SSH_AGENT_ENV - env file path to share variable between instances of git-bash
SSH_AGENT_ENV=~/ssh-agent.env
# import env file and supress error message if it does not exist
. $SSH_AGENT_ENV 2> /dev/null
# if we know that ssh-agent was launched before ($SSH_AGENT_PID is set) and process with that pid is running
if [ -n "$SSH_AGENT_PID" ] && ps -p $SSH_AGENT_PID > /dev/null
then
# we don't need to do anything, ssh-add and git will properly connect since we've imported env variables required
echo "Connected to ssh-agent"
else
# start ssh-agent and save required vars for sharing in $SSH_AGENT_ENV file
eval $(ssh-agent) > /dev/null
echo export SSH_AUTH_SOCK=\"$SSH_AUTH_SOCK\" > $SSH_AGENT_ENV
echo export SSH_AGENT_PID=$SSH_AGENT_PID >> $SSH_AGENT_ENV
echo "Started ssh-agent"
fi
Также в этом сценарии используется небольшая хитрость, чтобы гарантировать, что предоставленные переменные среды совместно используются экземплярами git-bash, сохраняя их в файле .env
.
Попробуйте использовать cygwin вместо bash. это сработало для меня
выше решение не работает для меня по неизвестной причине. ниже мое трудовое решение, которое успешно работало.
1) НЕ НЕ сгенерировать новый ключ ssh с помощью команды ssh-keygen -t rsa -C"[email protected]"
, вы можете удалить существующие ключи SSH.
2), но используйте Git GUI, → "Справка" → "Показать ключ ssh" → "Сгенерировать ключ", ключ будет автоматически сохранен в ssh и больше не нужно будет использовать ssh-add
.