ssh-add скарги: Не вдалося відкрити з'єднання з вашим агентом аутентифікації


151

Я намагався ssh-addпрацювати над RaspberryPi під керуванням Raspbian.

Я можу почати ssh-agent, коли я це роблю, в термінал видається такий вихід:

SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;

Якщо я біжу, ps aux | grep sshя бачу, що він працює.

Потім я намагаюся запустити ssh-add, щоб додати свою ключову фразу, і я отримав наступне:

Could not open a connection to your authentication agent.

Будь-які ідеї?


6
Спробуйтеeval $(ssh-agent)
Ульріх Дангель

Відповіді:


224

Ваша оболонка призначена для оцінки цього виводу коду оболонки за допомогою ssh-agent. Запустіть це замість:

eval "$(ssh-agent)"

Або якщо ви вже запустили ssh-агент, скопіюйте його, вставте його в підказку оболонки (якщо припустимо, що ви використовуєте оболонку, що відповідає Борну).

sshКоманди повинні знати, як спілкуватися з ssh-agent, вони знають, що із SSH_AUTH_SOCKзмінної середовища.


Дякую, я не зовсім зрозумів, як це працює. Це дуже високо оцінено.
Даніель Гроув

2
Або ви можете ввести ssh-agent bash і після того, як ssh-add запрацює
RaduM

@Stephane, чи правильно я розумію, що команда ssh-agent просто друкує результат її виконання, тоді як версія eval насправді виконує команду?
Denys S.

5
@DenysS. Ну ні, він робить свою установку, а потім повідомляє вашій оболонці, як оновити її середовище, щоб мати можливість зв’язатися з нею. Він не може зробити це сам по собі. Він може запустити нову оболонку з оновленого середовища (саме це і ssh-agent bashробиться), але він не може оновити пам'ять окремого процесу, що виконує іноземну команду (ваша вже запущена оболонка).
Стефан Шазелас

@StephaneChazelas, якщо мій ssh-агент запускається під час завантаження, але мені все одно доводиться його оцінювати в своїй оболонці, чи означає це, що він не оцінюється автоматично для кожної оболонки і має бути якось налаштований користувачем root?
Denys S.

27

Спробуйте це:

$ ssh-agent /bin/sh
$ ssh-add $yourkey

5
Це насправді працювало для мене там, де ніхто з інших відповідей не працював.
Джозеф Сноу

2
Якщо ви використовуєте рибну раковину, ця відповідь спрацює. ssh-agent /usr/bin/fish.
млявий

1
Я отримую помилку: " Не вдалося відкрити з'єднання з вашим агентом автентифікації ".
IgorGanapolsky

@slackmart Якщо ви встановили рибу в BSD, її місцезнаходження /usr/local/bin/fish(як альтернатива /usr/ports/shells/fish). Дякую whereisкоманді, що допомогла мені розібратися в цьому.
cjm

Чудово @cjm, я використовую Slackware Linux, і це шлях, який працює для мене.
млявий


6

Якщо використовувати csh як оболонку ( FreeBSD PI ), це може працювати:

eval `ssh-agent -c`

далі вам потрібно зробити щось на кшталт:

ssh-add ~/.ssh/id_rsa

Я отримую помилку: " Не вдалося відкрити з'єднання з вашим агентом аутентифікації ".
IgorGanapolsky

2

Ви також можете використовувати такий синтаксис:

ssh-agent sh -c 'ssh-add && echo Do some stuff here.'

Це не працює для мене, якщо ви підете, ssh-agent sh -c "ssh-add -l"це скаже вам, що у вас немає особи.
Ain Tohvri

Тому що вам слід додати його спочатку, наприклад: ssh-agent sh -c "ssh-add && ssh-add -l"надрукує вашу особу.
kenorb

1

Спробуйте це: перейдіть до C:\$Installation_Folder$\Git\cmd і виконайте:

start-ssh-agent 

Він відкриє команду cmd і запустить ssh-agentправильний шлях.

ssh-add ~/.ssh/id_rsa Тоді слід працювати.


" bash: start-ssh-agent: команда не знайдена "
IgorGanapolsky

1

Це було заплутано та має 2 можливі гарні відповіді, залежно від того, чи намагається користувач додати ssh-ключ у Linux чи Windows (як я). Це, ймовірно, не відповідає ОП, але є розширенням для git-bash. Я запускаю і Windows, і Ubuntu для розробки, і моя установка git дещо відрізняється в кожному.

Спробуйте це: перейдіть до C: \ $ Installation_Folder $ \ Git \ cmd та виконайте:

start-ssh-agent Він відкриє команду cmd і запустить ssh-агент правильним шляхом.

.. була гарною відповіддю Windows, але не вдалося вказати, що ви повинні пройти Windows Explorer, щоб знайти папку інсталяції Git, і запуск оболонки Windows відкриється після завершення кроку 1.
"перейдіть до C: \ $ Installation_Folder $ \ Git \ cmd "

Крок 2: потрібно просто двічі клацнути

start-ssh-agent

На кроці 3 ви повертаєтесь до git-bash або будь-якого * nix-емулятора термінала, який ви запускаєте, і запускаєте ssh-add. Якщо ви використовували ім'я за замовчуванням для відкритого ключа ssh, не потрібно додавати це ім'я як використання ssh-add, яке автоматично.


1

Є кілька способів, якщо ви хочете використовувати особистість із судо, наприклад sudo npm install.

Довгий шлях , але також надає кореневий доступ, тому вам не потрібно буде 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
    

Короткий шлях , тільки ваш користувач (якщо ви не хочете багато чого судо)

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

exportі evalпрацювати так само добре, як і за допомогою кореневої оболонки входу кореня, як Bourne. Якщо оболонка кореня - csh або tcsh, використовуйтеeval `ssh-agent -c`
Stéphane Chazelas

Зауважте, що ви також можете надати rootдоступ до свого ssh-агента, зробивши цеsudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install...
Stéphane Chazelas

Перевірені обидва також баш знову збивали з оболонки і жоден з них не працював належним чином. всі користувачі мого екземпляра debian jessie, включаючи root, за замовчуванням мають використовувати bash.
Беллданду

Що ви спробували? eval "$(ssh-agent)"при запиті оболонки bash, що працює під керуванням root. Очевидно, вам потрібно буде запуститись sshіз цієї оболонки чи її нащадка, щоб вони успадкували SSH_AUTH_SOCK env var. eval "$(sudo ssh-agent)"; sudo ssh...не працюватиме, оскільки sudoза замовчуванням не переходить SSH_AUTH_SOCK env var.
Стефан Шазелас

Я намагався eval "$(ssh-agent)"погано шукати пізніше, щоб побачити, чи є якась помилка конфігурації. Хоча теперішній спосіб, який я дав у цьому посібнику, дозволяє безкоштовно контролювати того, яким користувачем ви хочете бути, оскільки ви вже є root, і може отримати доступ до будь-яких користувачів id_rsa thats на сервері. Тож як тільки я змушу це працювати належним чином, я редагую свою відповідь.
Беллданду
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.