Не удалось открыть соединение с вашим агентом аутентификации

Я сталкиваюсь с этой ошибкой:

$ 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. Если вы используете другую оболочку или операционную систему, вам может потребоваться использовать вариант команды, такой как перечисленные в других ответах.

Смотрите следующие ответы:

  1. ssh-add жалуется: не удалось открыть соединение с вашим агентом аутентификации
  2. Git push требует имя пользователя и пароль (содержит подробные инструкции по использованию ssh-agent)
  3. Как запустить (git / ssh) агент аутентификации?,
  4. Не удалось открыть соединение с вашим агентом аутентификации

Чтобы автоматически запустить 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

Первоначальный источник исправления:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html

MsysGit или Cygwin

Если вы используете Msysgit или Cygwin, вы можете найти хорошее руководство в SSH-Agent по msysgit, cygwin и bash:

  1. Добавить файл с именем .bashrc в вашу домашнюю папку.

  2. Откройте файл и вставьте в:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
  3. Это предполагает, что ваш ключ находится в обычном ~/.ssh/id_rsa место нахождения. Если это не так, укажите полный путь после ssh-add команда.

  4. Добавить или создать файл ~/.ssh/config с содержанием

    ForwardAgent yes
    

    В оригинальном уроке ForwardAgent параметр Yes, но это опечатка. Используйте все строчные буквы, иначе вы получите ошибки.

  5. Перезапустите 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):

  1. Почистил мою папку.ssh на C:\user\<username>\.ssh\
  2. Создан новый ключ SSH
    $ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
  3. Проверьте, запущен ли какой-либо идентификатор процесса (агент ssh).
    $ ps aux | grep ssh
  4. (Необязательно) Если найдены какие-либо в шаге 3, убить тех,
    $ kill <pids>
  5. Запустил ssh агент
    $ eval `ssh-agent -s`
  6. Добавлен ключ 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

Вот решение, которое сработало для меня.

  1. Оказывается, я запускал Pageant ssh agent на своем компьютере с Windows - я бы проверил, что у вас работает. Я подозреваю, что это Pageant, так как он поставляется по умолчанию с Putty и winScp

  2. Ssh-add не работает из командной строки с этим типом агента

  3. Вам нужно добавить закрытый ключ через окно пользовательского интерфейса Pageant, которое вы можете получить, дважды щелкнув значок Pageant на панели задач (после его запуска).

  4. Прежде чем добавить ключ в Pageant, необходимо преобразовать его в формат PPK. Полная инструкция доступна здесь Как конвертировать ключ SSH в формат ppk

  5. Вот и все. После того, как я загрузил свой ключ в хранилище, я смог использовать 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
Другие вопросы по тегам