ssh-добавьте жалуется: не Мог открыть соединение с Вашим агентом аутентификации

Это вызвано тем, что то, что Вы хотите, должно передать литеральную пустую строку curl, но то, что Вы получаете, является рядом литеральных кавычек, так как они уже заключаются в кавычки. Контрольные точки другому, который просто рекомендует использовать функцию:

download(){
    curl http://somepage "$@"
}
download -x ''

Если Вы хотите наблюдать то, что на самом деле делает Ваш сценарий, попытайтесь работать set -x перед ним.

154
09.06.2016, 17:48
9 ответов

Ваша оболочка предназначена для оценки того кода оболочки, произведенного ssh-agent. Выполните это вместо этого:

eval "$(ssh-agent)"

Или если Вы уже запустили ssh-агент, скопируйте, вставляют его к Вашему приглашению оболочки (предполагающий, что Вы выполняете подобную Границе оболочку).

ssh команды должны знать, как говорить ssh-agent, они знают это от SSH_AUTH_SOCK переменная среды.

234
27.01.2020, 19:28
  • 1
    Спасибо, я не вполне понял, как это работает. Это очень muchly ценившее. –  Daniel Groves 22.09.2012, 20:30
  • 2
    Или можно ввести удар ssh-агента и после того, как ssh-добавление будет работать –  RaduM 15.05.2013, 16:56
  • 3
    @Stephane, я получаю его правильно, что команда ssh-агента просто печатает вывод, он - выполнение, в то время как версия оценки на самом деле выполняет команду? попытка –  Denys S. 07.10.2013, 11:50
  • 4
    @DenysS. Хорошо не это делает свою установку и затем говорит Вашу оболочку, как обновить его среду, чтобы смочь связаться с ним. Это не может сделать этого отдельно. Это может запустить новую оболочку с обновленной среды (это что ssh-agent bash делает), но это не может обновить память отдельного процесса, выполняющего внешнюю команду (Ваша уже рабочая оболочка). –  Stéphane Chazelas 07.10.2013, 12:03
  • 5
    @StephaneChazelas, если мой ssh-агент запускается на начальной загрузке, но у меня все еще есть к оценке он в моей оболочке, это означает, что это автоматически не оценено для каждой оболочки и должно быть настроено так или иначе полностью пользователь? –  Denys S. 07.10.2013, 12:10

Попробуйте этого:

$ ssh-agent /bin/sh
$ ssh-add $yourkey
28
27.01.2020, 19:28
  • 1
    Это на самом деле работало на меня, где ни один из других ответов не работал. –  Joseph Snow 12.11.2014, 20:06
  • 2
    Если Вы используете fishshell, этот ответ работы. ssh-agent /usr/bin/fish. –  slackmart 29.03.2016, 21:17
  • 3
    я получаю ошибку: "Не удалось открыть соединение с Вашим агентом аутентификации". –  IgorGanapolsky 12.08.2016, 20:29
  • 4
    @slackmart при установке рыбы в BSD, его местоположение, /usr/local/bin/fish (альтернативно /usr/ports/shells/fish). Благодарите whereis команда для помощи мне понять это. –  cjm 26.08.2016, 07:28
  • 5
    Большой @cjm, я использую Linux Slackware, и это - путь, который работает на меня. –  slackmart 27.08.2016, 14:35

При использовании csh как оболочка (FreeBSD PI) это могло работать:

eval `ssh-agent -c`

затем только необходимо сделать что-то как:

ssh-add ~/.ssh/id_rsa
6
27.01.2020, 19:28
  • 1
    я получаю ошибку: "Не удалось открыть соединение с Вашим агентом аутентификации". –  IgorGanapolsky 12.08.2016, 21:41

Этот вопрос также очень хорошо освещен в Stackoverflow .

eval `ssh-agent -s`

ssh-add
12
27.01.2020, 19:28

Попробуй это: перейдите по ссылке C:\$Installation_Folder$\Git\cmd. и выполнит:

start-ssh-agent 

Откроет команду cmd и запустит ssh-agent в правильном направлении. Затем должен сработать

ssh-add ~/.ssh/id_rsa.

2
27.01.2020, 19:28

Вы также можете использовать следующий синтаксис:

ssh-agent sh -c 'ssh-add && echo Do some stuff here.'
2
27.01.2020, 19:28

Это запутало, и имеет 2 возможных правильных ответа, в зависимости от того, пытается ли пользователь добавить ключ ssh на Linux или на Windows (как я). Возможно, это не ответ на вопрос OP, но это расширение для git-bash. Я использую как Windows, так и Ubuntu для разработки, и моя установка git немного отличается в каждой из них.

Попробуйте следующее: зайдите в C:\$Installation_Folder$\Git\cmd и выполните:

start-ssh-agent Это откроет команду cmd и запустит ssh-agent правильным способом. правильным способом.

... был хорошим ответом Windows, но в нем не было указано, что вы должны были пройти через проводник Windows, чтобы найти папку установки Git, и запустить оболочку Windows, которая откроется по завершении шага 1.
"go to C:\$Installation_Folder$\Git\cmd"

Шаг 2: вам просто нужно дважды щелкнуть

start-ssh-agent

На шаге 3 вы возвращаетесь в git-bash или любой другой эмулятор терминала *nix и запускаете ssh-add. Если вы использовали имя по умолчанию для открытого ключа ssh, вам не нужно добавлять имя, так как ssh-add использует его автоматически.

2
27.01.2020, 19:28

Есть несколько способов, если вы хотите использовать идентификатор в sudo, например, sudo npm install.

Длинный путь, но также дает вам root-доступ, так что вам не придется часто использовать sudo.

  1. Выполните
    sudo ssh-agent bash
    Это запросит ваш пароль и после запустит ssh-agent с привилегиями суперпользователя,
  2. Перейдите в папку .ssh вашего пользователя
    cd /home/user/.ssh
  3. Оттуда вы можете выполнить

    ssh-add id_rsa
    npm install git+ssh://git@YOUR-PROJECT-URL -g && npm link PROJECT-NAME
    

Короткий путь, только ваш пользователь (если вы не хотите часто использовать sudo)

eval "$(ssh-agent)"
ssh-add
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install git+ssh://git@PROJECT-URL -g && sudo npm link PROJECT-NAME
1
27.01.2020, 19:28

Самое простое решение не обязательно должно быть плохим.

Вам не нужны ни ssh-agent, ни ssh-add, если вы используете секретный ключ без пароля, см. https://stackoverflow.com/a/48290333/11154841.

Благодаря этому я избавился от ошибки Could not open a connection to your authentication agent. ssh-add exit code 2.

Это не обязательно должно быть небезопасно. :Вам просто нужно удалить оба ключа пары ключей сразу после их использования. Это означает, что вы должны удалить открытый ключ на сервере и удалить закрытый ключ на клиенте. Само собой :никогда их больше не используйте, даже не сохраняйте где-нибудь резервную копию.

Имейте в виду, что вы можете создать открытый ключ из закрытого ключа, но не наоборот. Обычно достаточно просто удалить открытый ключ из зарегистрированных ключей на вашем портале Git, но лучше удалить оба, чтобы один и тот же открытый ключ больше никогда не использовался. Даже если кто-то украл ваш закрытый ключ, от этого будет бесполезно, если вы просто никогда больше не будете использовать его открытый ключ.

С закрытым ключом без пароля вы даже можете использовать его в Docker, чтобы обойти любые вводы пароля. Вы можете клонировать репозиторий git без пароля,закрытый ключ без пароля — это все, что вам нужно. См. Dockerfile :клон репозитория с закрытым ключом без пароля. Например, ошибки :«агент аутентификации» или «чтение _фразы-пароля :не могут открыть /dev/tty» .

0
16.03.2021, 01:22

Теги

Похожие вопросы