Не удалось открыть соединение с вашим агентом аутентификации
Я столкнулся с этой ошибкой:
$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
! Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.
Я попытался добавить ключи, и я получаю эту ошибку ниже:
$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
Ответы
Ответ 1
Вы начали ssh-agent
?
Вам может потребоваться запустить ssh-agent
перед запуском команды ssh-add
:
eval `ssh-agent -s`
ssh-add
Обратите внимание, что это запустит агент для msysgit Bash в Windows. Если вы используете другую оболочку или операционную систему, возможно, вам придется использовать вариант команды, например, перечисленные в других ответах.
Посмотрите следующие ответы:
Чтобы автоматически запустить ssh-agent и разрешить работу одного экземпляра в нескольких консольных окнах, см. Запустить ssh-agent при входе в систему.
Зачем нам нужно использовать eval
вместо ssh-agent
?
Чтобы узнать, почему, см. ответ Робин Грин.
Открытые и закрытые ключи
Кроме того, всякий раз, когда я использую ssh-add
, я всегда добавляю к нему закрытые ключи. Файл ~/.ssh/id_rsa.pub
выглядит как открытый ключ, я не уверен, что это сработает. У вас есть файл ~/.ssh/id_rsa
? Если вы открываете его в текстовом редакторе, то он говорит это закрытый ключ?
Ответ 2
Я попробовал другие решения безрезультатно. Я сделал больше исследований и обнаружил, что работала следующая команда. Я использую Windows 7 и Git Bash.
eval $(ssh-agent)
Дополнительная информация в: https://coderwall.com/p/rdi_wq
Ответ 3
Для меня работала следующая команда. Я использую CentOS.
exec ssh-agent bash
Ответ 4
MsysGit или Cygwin
Если вы используете Msysgit или Cygwin, вы можете найти хороший учебник в SSH-Agent в msysgit и cygwin и bash:
-
Добавьте файл с именем .bashrc
в домашнюю папку.
-
Откройте файл и вставьте его:
#!/bin/bash
eval `ssh-agent -s`
ssh-add
-
Это предполагает, что ваш ключ находится в обычном месте ~/.ssh/id_rsa
. Если это не так, укажите полный путь после команды ssh-add
.
-
Добавить или создать файл ~/.ssh/config
с содержимым
ForwardAgent yes
В исходном руководстве параметр ForwardAgent
Yes
, но это опечатка. Используйте все строчные буквы или вы получите ошибки.
-
Перезапустите Msysgit. Он попросит вас ввести кодовую фразу один раз и что он (пока вы не закончите сеанс, или ваш ssh-agent не будет убит.)
Mac/OS X
Если вы не хотите запускать новый ssh-agent при каждом открытии терминала, проверьте Keychain. Я сейчас на Mac, поэтому я использовал учебник ssh-agent с zsh и keychain в Mac OS X, чтобы настроить его, но я уверен, что Google поиск будет иметь много информации для Windows.
Обновить. Лучшим решением для Mac является добавление вашего ключа в цепочку ключей Mac OS:
ssh-add -K ~/.ssh/id_rsa
Просто как это.
Ответ 5
Не удалось открыть соединение с вашим агентом проверки подлинности
Чтобы устранить эту ошибку:
bash:
$ eval `ssh-agent -s`
Tcsh:
$ eval `ssh-agent -c`
Затем используйте ssh-add
, как обычно.
Горячий совет:
Я всегда забывал, что вводить для вышеуказанных команд ssh-agent, поэтому я создал псевдоним в файле .bashrc
следующим образом:
alias ssh-agent-cyg='eval `ssh-agent -s`'
Теперь вместо использования ssh-agent
я могу использовать ssh-agent-cyg
например.
$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk
Исходный исходный код исправления:
http://cygwin.com/ml/cygwin/2011-10/msg00313.html
Ответ 6
Я столкнулся с той же проблемой для Linux, и вот что я сделал:
В принципе, команда ssh-agent запускает агент, но на самом деле он не устанавливает переменные среды для его запуска. Он просто выводит эти переменные в оболочку.
Вам необходимо:
eval `ssh-agent`
а затем выполните команду ssh-add. См. Не удалось открыть соединение с вашим агентом проверки подлинности.
Ответ 7
ssh-add и ssh (при условии, что вы используете реализации openssh) требуется переменная среды, чтобы знать, как разговаривать с агентом ssh. Если вы запустили агент в другом окне командной строки к тому, который вы используете сейчас, или если вы начали его неправильно, ни ssh-add, ни ssh не увидит, что эта переменная среды установлена (поскольку переменная окружения локально установлена в команду запросите его установить).
Вы не говорите, какую версию ssh вы используете, но если вы используете cygwin, вы можете использовать этот рецепт из агента SSH на Cygwin:
# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Это автоматически запустит агент для каждого нового окна командной строки, которое вы открываете (что является субоптимальным, если вы открываете несколько командных подсказок за один сеанс, но по крайней мере он должен работать).
Ответ 8
Попробуйте выполнить следующие действия:
1) Откройте Git Bash и запустите: cd ~/.ssh
2) Попробуйте запустить агент: eval $(ssh-agent)
3) Сейчас вы можете запустить следующую команду: ssh-add -l
Ответ 9
Вместо использования $ ssh-agent -s
я использовал $ eval 'ssh-agent -s'
для решения этой проблемы.
Вот что я выполнил шаг за шагом (шаг 2 и далее на GitBash):
- Очистил мою папку .ssh в
C:\user\<username>\.ssh\
- Создан новый ключ SSH
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
- Проверьте, запущен ли какой-либо идентификатор процесса (агент ssh).
$ ps aux | grep ssh
- (Необязательно) Если найдены какие-либо в шаге 3, убить тех,
$ kill <pids>
- Запустил ssh агент
$ eval 'ssh-agent -s'
- Добавлен ключ ssh, сгенерированный на шаге 2, в агент ssh
$ ssh-add ~/.ssh/id_rsa
Ответ 10
В Windows 10 я попробовал все ответы, перечисленные здесь, но ни один из них, похоже, не работал. На самом деле они дают ключ. Чтобы решить проблему просто вам нужно 3 команды. Идея этой проблемы заключается в том, что ssh-add требует, чтобы переменные среды SSH_AUTH_SOCK и SSH_AGENT_PID устанавливались с текущим пути файла ssh-agent sock и номером pid.
ssh-agent -s > temp.txt
Это сохранит вывод ssh-agent в файле. Содержимое текстового файла будет выглядеть примерно так:
SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;
Скопируйте что-то вроде "/tmp/ssh-kjmxRb2764/agent.2764" из текстового файла и выполните следующую команду непосредственно в консоли:
set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764
Скопируйте что-то вроде "3044" из текстового файла и выполните следующую команду непосредственно в консоли:
set SSH_AGENT_PID=3044
Теперь, когда переменные среды (SSH_AUTH_SOCK и SSH_AGENT_PID) установлены для текущего сеанса консоли, запустите команду ssh-add, и она не сможет снова подключиться к агенту ssh.
Ответ 11
Одна вещь, с которой я столкнулся, заключалась в том, что eval
не работал у меня с помощью Cygwin, что для меня работало ssh-agent ssh-add id_rsa
.
После этого я столкнулся с проблемой, что мой закрытый ключ был слишком открытым, решение, которое мне удалось найти для этого (от здесь):
chgrp Users id_rsa
а также
chmod 600 id_rsa
Наконец, я смог использовать:
ssh-agent ssh-add id_rsa
Ответ 12
Чтобы усилить ответ n3o для Windows 7...
Моя проблема была в том, что некоторые требуемые переменные среды не были установлены, а n3o правильно, что ssh-agent сообщает вам, как устанавливать эти переменные среды, но на самом деле не устанавливает их.
Поскольку Windows не позволяет вам делать "eval", вот что делать:
Перенаправить вывод ssh-agent в пакетный файл с помощью
ssh-agent > temp.bat
Теперь используйте текстовый редактор, например Блокнот, для редактирования temp.bat. Для каждой из первых двух строк:
- Вставьте слово "set" и пробел в начале строки.
- Удалите первую точку с запятой и все, что следует.
Теперь удалите третью строку. Ваш temp.bat должен выглядеть примерно так:
set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
Запустите temp.bat. Это установит переменные среды, которые необходимы для работы ssh-add.
Ответ 13
Я только что получил эту работу. Откройте файл ~/.ssh/config
.
Добавьте следующее:
Host github.com
IdentityFile ~/.ssh/github_rsa
Страница, которая дала мне подсказку Настройка SSH для Git
сказал, что отступы в одном пространстве важны... хотя у меня была конфигурация здесь от Heroku, у которой не было этого места и работает должным образом.
Ответ 14
Если вы будете следовать этим инструкциям, ваша проблема будет решена.
Если вы используете компьютер Mac или Linux, введите:
eval "$(ssh-agent -s)"
Если вы на машине Windows, введите:
ssh-agent -s
Ответ 15
Позвольте мне предложить другое решение. Если вы только что установили Git 1.8.2.2 или около того, и хотите включить SSH, следуйте инструкциям .
Все до шага 5.6, где вы можете столкнуться с небольшим запахом. Если агент SSH уже запущен, вы можете получить следующее сообщение об ошибке при перезапуске bash
Could not open a connection to your authentication agent
Если вы это сделаете, используйте следующую команду, чтобы увидеть, работает ли более одного процесса ssh-agent
ps aux | grep ssh
Если вы видите более одного сервиса ssh-agent, вам нужно будет убить все эти процессы. Используйте команду kill следующим образом (PID будет уникальным на вашем компьютере)
kill <PID>
Пример:
kill 1074
После удаления всех процессов ssh-agent запустите px aux | grep ssh, чтобы убедиться, что они ушли, а затем перезапустите Bash.
Воила, теперь вы должны получить что-то вроде этого:
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
Теперь вы можете продолжить работу на шаге 5.7 и далее.
Ответ 16
Примечание: это ответ на этот вопрос, который был объединен с этим. Этот вопрос был для Windows 7, то есть мой ответ был для Cygwin/MSYS/MSYS2. Это похоже на некоторый Unix, где я не ожидал бы, что с агентом SSH нужно будет управлять таким образом.
Это запустит агент SSH и выполнит аутентификацию только в первый раз, когда вам это нужно, а не каждый раз, когда вы открываете свой терминал Bash. Он может быть использован для любой программы, использующей SSH в целом, включая ssh и scp. Просто добавьте это в /etc/profile.d/ssh-helper.sh
:
ssh-auth() {
# Start the SSH agent only if not running
[[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh
# Identify the running SSH agent
[[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null
# Authenticate (change key path or make a symlink if needed)
[[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}
# You can repeat this for other commands using SSH
git() { ssh-auth; command git "[email protected]"; }
Ответ 17
Использовать параметр -A при подключении к серверу, например:
ssh -A [email protected]
на странице man:
-A Enables forwarding of the authentication agent connection.
This can also be specified on a per-host basis in a configuration file.
Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent's
UNIX-domain socket) can access the local agent through the forwarded
connection. An attacker cannot obtain key material from the agent,
however they can perform operations on the keys that enable them to
authenticate using the identities loaded into the agent.
Ответ 18
Основное решение для запуска ssh-agent
дано во многих ответах. Однако многократный запуск ssh-agent
(для каждого открытого терминала или для удаленного входа в систему) создаст много копий ssh-agent
работающих в памяти. Сценарии, которые предлагаются, чтобы избежать этой проблемы, являются длинными и должны записывать и/или копировать отдельный файл или должны записывать слишком много строк в ~/.profile
или ~/.schrc
. Позвольте мне предложить простое двухстрочное решение:
Для sh, bash и т.д.:
# ~/.profile
if ! pgrep -q -U 'whoami' -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
Для csh, tcsh и т.д.:
# ~/.schrc
sh -c 'if ! pgrep -q -U 'whoami' -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval 'cat ~/.ssh-agent.tcsh'
Что здесь:
- поиск
ssh-agent
процесса по имени и по текущему пользователю - Создайте соответствующий файл сценария оболочки, вызвав
ssh-agent
и запустите ssh-agent
самостоятельно, если не найден текущий процесс ssh-agent
- оценить созданный сценарий оболочки, который настраивает соответствующую среду
Нет необходимости защищать созданный сценарий оболочки ~/.ssh-agent.tcsh
или ~/.ssh-agent.sh
от доступа других пользователей, поскольку: сначала связь с ssh-agent
обрабатывается через защищенный сокет, который недоступен для другие пользователи и другие пользователи могут найти сокет ssh-agent
просто путем перечисления файлов в каталоге /tmp/
. Что касается доступа к процессу ssh-agent
то это одно и то же.
Ответ 19
Вы можете использовать эту команду: ssh-agent bash и затем запустить ssh-add. более подробно об этом вы можете найти ssh-agent или команду man ssh-agent
Ответ 20
Попробуйте следующее:
ssh-agent sh -c 'ssh-add && git push heroku master'
Ответ 21
У меня была эта проблема, когда я начал работать с ssh-agent, когда он уже запущен. Смущает. Чтобы убедиться, что это так, используйте
eval $(ssh-agent)
чтобы убедиться, что это то же самое, что и вы. В моем случае это отличалось от того, что я только начал.
Чтобы еще раз проверить, есть ли у вас более одного работающего ssh-агента, вы можете просмотреть:
ps -ef | grep ssh
Ответ 22
У меня была аналогичная проблема, когда я пытался заставить это работать в Windows для подключения к stash через ssh
Вот решение, которое сработало для меня.
-
Оказывается, я запускал агент ASP.NET на моем ящике Windows - я бы проверял, что вы используете. Я подозреваю, что это Пейдж, поскольку он приходит по умолчанию с Putty и winScp
-
ssh-add не работает из командной строки с этим типом агента
-
Вам нужно добавить закрытый ключ через окно пользовательского интерфейса, которое вы можете получить, удвоив значок Pageant на панели задач (после его запуска).
-
Прежде чем добавить ключ к странице, вам необходимо преобразовать его в формат PPK. Полные инструкции доступны здесь Как преобразовать SSH-ключ в формат ppk
-
Вот и все. Как только я загрузил свой ключ в stash, я смог использовать SourceTree для создания локального репо и клонирования удаленного.
Надеюсь, что это поможет...
Ответ 23
Прочтите ответ @cupcake для объяснений. Здесь я только пытаюсь автоматизировать исправление.
Если вы используете терминал Cygwin с BASH, добавьте следующее в файл $HOME/.bashrc. Это только запускает ssh-agent один раз в первом терминале Bash и добавляет ключи к ssh-agent. (Не уверен, что это требуется в Linux)
###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
# need to find SSH_AUTH_SOCK again.
# restarting is an easy option
pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
# echo "not running. starting"
eval $(ssh-agent -s) > /dev/null
rm -f $SSH_AUTH_SOCK_FILE
echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
# echo "already running"
fi
source $SSH_AUTH_SOCK_FILE
DONT FORGET добавить правильные ключи в команду "ssh-add".
Ответ 24
Я разрешил ошибку путем принудительной остановки (убил) git процессов (ssh agent), затем удалил Git, а затем снова установил git.
Ответ 25
Если вы используете Putty, возможно, вам нужно установить опцию "Соединение/SSH/Auth/Allow agent forwarding" на "true".
Ответ 26
Этот работал для меня.
В окне CMD введите следующую команду:
cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa
Ответ 27
Используя Git Bash в Win8.1E, моя резолюция была следующей:
eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
Ответ 28
Для bash, встроенного в Windows 10, я добавил это в .bash_profile:
if [ -z $SSH_AUTH_SOCK ]; then
if [ -r ~/.ssh/env ]; then
source ~/.ssh/env
if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
rm ~/.ssh/env
unset SSH_AUTH_SOCK
fi
fi
fi
if [ -z $SSH_AUTH_SOCK ]; then
ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
chmod 600 ~/.ssh/env
source ~/.ssh/env > /dev/null 2>&1
fi
Ответ 29
Даже я получал сообщение "Не удалось открыть соединение с вашим агентом проверки подлинности". при запуске команды при генерации и добавлении ключа SSH: ssh-add ~/.ssh/id_rsa
. Я разрешил его, остановив несколько экземпляров ssh-agent
, запущенных на моем компьютере, а затем удалил Git с панели управления на моей машине с Windows, а затем снова установил Git, и теперь все было в рабочем состоянии.
Ответ 30
В моем случае мой брандмауэр Comodo изолировал ssh-агента. Как только я отключил песочницу, я смог клонировать репозиторий.
FYI, я использую брандмауэр Comodo в Windows 7.