Не удалось открыть соединение с вашим агентом аутентификации
Я сталкиваюсь с этой ошибкой:
$ 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.
44 ответа
Вы начали ssh-agent
?
Возможно, вам придется начать ssh-agent
прежде чем запустить ssh-add
команда:
eval `ssh-agent -s`
ssh-add
Обратите внимание, что это запустит агент для msysgit Bash в Windows. Если вы используете другую оболочку или операционную систему, вам может потребоваться использовать вариант команды, такой как перечисленные в других ответах.
Смотрите следующие ответы:
- ssh-add жалуется: не удалось открыть соединение с вашим агентом аутентификации
- Git push требует имя пользователя и пароль (содержит подробные инструкции по использованию ssh-agent)
- Как запустить (git / ssh) агент аутентификации?,
- Не удалось открыть соединение с вашим агентом аутентификации
Чтобы автоматически запустить ssh-agent и позволить одному экземпляру работать в нескольких окнах консоли, см. Раздел Запуск ssh-agent при входе в систему.
Почему мы должны использовать eval
вместо просто ssh-agent
?
Чтобы узнать почему, смотрите ответ Робин Грин.
Публичные и частные ключи
Кроме того, всякий раз, когда я использую ssh-add
Я всегда добавляю закрытые ключи к нему. Файл ~/.ssh/id_rsa.pub
выглядит как открытый ключ, я не уверен, что это сработает. У вас есть ~/.ssh/id_rsa
файл? Если вы откроете его в текстовом редакторе, он говорит, что это закрытый ключ?
Я пробовал другие решения безрезультатно. Я провел дополнительные исследования и обнаружил, что работает следующая команда. Я использую Windows 7 и Git Bash.
eval $(ssh-agent)
Больше информации в: https://coderwall.com/p/rdi_wq
Следующая команда сработала для меня. Я использую CentOS.
exec ssh-agent 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
Первоначальный источник исправления:
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-агент каждый раз, когда открываете терминал, проверьте Keychain. Сейчас я на Mac, поэтому я использовал учебник ssh-agent с zsh & keychain для Mac OS X, чтобы настроить его, но я уверен, что поиск Google будет иметь много информации для Windows.
Обновление: лучшее решение для Mac - добавить ключ в связку ключей Mac OS:
ssh-add -K ~/.ssh/id_rsa
Просто как тот.
Вы можете использовать эту команду:ssh-agent bash и затем запустить ssh-add. более подробно об этом вы можете найти ssh-agent или команду man ssh-agent
Для 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
Это автоматически запустит агента для каждого нового окна командной строки, которое вы открываете (что неоптимально, если вы открываете несколько командных строк в одном сеансе, но, по крайней мере, это должно работать).
Я столкнулся с той же проблемой для Linux, и вот что я сделал:
По сути, команда ssh-agent запускает агент, но на самом деле он не устанавливает переменные среды для его запуска. Он просто выводит эти переменные в оболочку.
Вам нужно:
eval `ssh-agent`
а затем сделать ssh-add. См. Не удалось открыть соединение с вашим агентом аутентификации.
Вместо того, чтобы использовать $ ssh-agent -s
, Я использовал $ eval `ssh-agent -s`
решить эту проблему.
Вот что я выполнил шаг за шагом (шаг 2 и далее на GitBash):
- Почистил мою папку.ssh на
C:\user\<username>\.ssh\
- Создан новый ключ SSH
$ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
- Проверьте, запущен ли какой-либо идентификатор процесса (агент ssh).
$ ps aux | grep ssh
- (Необязательно) Если найдены какие-либо в шаге 3, убить тех,
$ kill <pids>
- Запустил ssh агент
$ eval `ssh-agent -s`
- Добавлен ключ ssh, сгенерированный на шаге 2, в агент ssh
$ ssh-add ~/.ssh/id_rsa
Попробуйте выполнить следующие действия:
1) Откройте Git Bash и запустите: cd ~/.ssh
2) Попробуйте запустить агент: eval $(ssh-agent)
3) Прямо сейчас вы можете запустить следующую команду: ssh-add -l
В Windows 10 я попробовал все ответы, перечисленные здесь, но ни один из них, похоже, не работал. На самом деле они дают подсказку. Чтобы решить проблему просто вам нужно 3 команды. Идея этой проблемы заключается в том, что ssh-add необходимо установить переменные окружения SSH_AUTH_SOCK и SSH_AGENT_PID с текущим путем к файлу sock-агента ssh-agent и номером 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.
Одна вещь, с которой я столкнулся, состояла в том, что eval
у меня не получилось использовать Cygwin, у меня получилось ssh-agent ssh-add id_rsa
,
После этого я столкнулся с проблемой, что мой закрытый ключ был слишком открытым, решение, которое мне удалось найти для этого ( отсюда):
chgrp Users id_rsa
так же как
chmod 600 id_rsa
наконец я смог использовать:
ssh-agent ssh-add id_rsa
Для пользователей окон я нашел cmd "eval ssh-agent -s
"не сработало, но использование git bash сработало" eval ssh-agent -s
; ssh-add KEY_LOCATION "и убедитесь, что служба Windows" Управление ключами OpenSSH "не отключена
Чтобы усилить ответ 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.
Я только что получил это работает. Открыть свой ~/.ssh/config
файл.
Добавить следующее-
Host github.com
IdentityFile ~/.ssh/github_rsa
На странице, которая дала мне подсказку " Настроить SSH для Git", говорилось, что отступ в одном пробеле важен... хотя у меня здесь была конфигурация от Heroku, которая не имела этого пространства и работает должным образом.
Если вы будете следовать этим инструкциям, ваша проблема будет решена.
Если вы работаете на компьютере Mac или Linux, введите:
eval "$(ssh-agent -s)"
Если вы работаете на компьютере с Windows, введите:
ssh-agent -s
У меня была такая же проблема на Ubuntu
и другие решения не помогли мне. Я наконец понял, в чем была моя проблема. Я создал свой ssh
ключи в /root/.ssh
папка, так что даже когда я побежал ssh-add
как корень, он не мог делать свою работу и продолжать говорить
Could not open a connection to your authentication agent.
Я создал свои открытые и закрытые ключи SSH в /home/myUsername/
папка и я использовал
ssh-agent /bin/sh
потом я побежал
ssh-add /home/myUsername/.ssh/id_rsa
и проблема была решена таким образом.
Примечание: для доступа к вашему репозиторию на git
добавьте свой пароль git при создании ssh
ключи с ssh-keygen -t rsa -C "your git email here"
,
Позвольте мне предложить другое решение. Если вы только что установили 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 и далее.
Примечание: это ответ на этот вопрос, который был объединен с этим. Этот вопрос был для 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 "$@"; }
Вам нужно запустить ssh-агент
В вашем терминале запустите:
eval $(ssh-agent -s)
В Windows 10 при использовании терминала командной строки у меня работает следующее:
ssh-agent cmd
ssh-add
После этого вас попросят ввести кодовую фразу:
Enter passphrase for /c/Users/username/.ssh/id_rsa:
Основное решение для запуска 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
обрабатывать это одни и те же вещи.
При подключении к серверу используйте параметр -A, например:
ssh -A root@myhost
со страницы руководства:
-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.
Попробуйте следующее:
ssh-agent sh -c 'ssh-add && git push heroku master'
У меня была эта проблема, когда я запускал ssh-agent, когда он уже работал. Смущается. Чтобы увидеть, если это так, используйте
eval $(ssh-agent)
чтобы увидеть, если это так же, как вы думали, это должно быть. В моем случае это было не то, что я только начал.
Чтобы дополнительно проверить, работает ли более одного ssh-агента, вы можете просмотреть:
ps -ef | grep ssh
Прочитайте ответ @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
НЕ ЗАБЫВАЙТЕ добавить правильные ключи в команду "ssh-add".
Вы должны запустить эту команду перед добавлением:
eval `ssh-agent -s`
Затем вы должны выполнить команду следующим образом:
ssh-add ~/.ssh/id_rsa
У меня была похожая проблема, когда я пытался заставить это работать на Windows, чтобы соединиться с тайником через ssh
Вот решение, которое сработало для меня.
Оказывается, я запускал Pageant ssh agent на своем компьютере с Windows - я бы проверил, что у вас работает. Я подозреваю, что это Pageant, так как он поставляется по умолчанию с Putty и winScp
Ssh-add не работает из командной строки с этим типом агента
Вам нужно добавить закрытый ключ через окно пользовательского интерфейса Pageant, которое вы можете получить, дважды щелкнув значок Pageant на панели задач (после его запуска).
Прежде чем добавить ключ в Pageant, необходимо преобразовать его в формат PPK. Полная инструкция доступна здесь Как конвертировать ключ SSH в формат ppk
Вот и все. После того, как я загрузил свой ключ в хранилище, я смог использовать SourceTree для создания локального репо и клонирования удаленного.
Надеюсь это поможет...
Используя Git Bash на Win8.1E, я получил следующее разрешение:
eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
Для 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