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

Я столкнулся с этой ошибкой:

$ 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):

  1. Очистил мою папку .ssh в C:\user\<username>\.ssh\
  2. Создан новый ключ SSH
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  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

Ответ 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".

enter image description here

Ответ 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.