У мене виникла ця проблема і при спробі розгорнути якийсь код за допомогою Capistrano . Дуже засмучує. Ось два способи, які я знаю, для вирішення цього питання.
Спосіб 1: Додайте всі відомі ключі до агента SSH.
Таким чином , один рішення , яке я знайшов, щоб працювати ssh-add
з -A
опцією-який додає всі відомі особистості до SSH агентом з використанням ключових фраз , що зберігаються у вашій брелоку-як це:
ssh-add -A
Тепер це працює, але він не буде зберігатися через перезавантаження. Тож якщо ви більше ніколи не хочете про це турбуватися, просто відкрийте ~/.bash_profile
файл користувача таким чином:
nano ~/.bash_profile
І додайте цей рядок донизу:
ssh-add -A 2>/dev/null;
Тепер, коли ви відкриєте нове вікно терміналу, все повинно бути добре!
Спосіб 2. Додайте до агента лише ключі SSH, які знаходяться в брелоку .
Тож, хоча ця ssh-add -A
опція повинна працювати в більшості основних випадків, я нещодавно зіткнувся з проблемою, де у мене було 6-7 ящиків Vagrant (для використання яких використовуються SSH-ключі / посвідчення) на машині поверх більш поширених id_rsa.pub
на місці.
Коротше кажучи, я опинився закритим на віддаленому сервері через занадто багато спроб на основі ключів / ідентичностей SSH, оскільки доступ до сервера був заснований на паролі, а SSH-ключі / ідентичності - SSH-ключі / ідентичності. Тож агент SSH спробував усі мої SSH ключі, не вдався, і я навіть не зміг дійти до запиту пароля.
Проблема полягає в тому ssh-add -A
, що просто довільно додаватимуть кожен агент SSH-ключ / ідентифікатор, який ви маєте, навіть якщо цього не потрібно; наприклад, у випадку з бродячими коробками.
Моє рішення після довгого тестування було наступним.
По-перше, якщо до вашого агента додано більше SSH-ключів / ідентифікацій, ніж вам потрібно, як показано, а ssh-add -l
потім очистіть їх усі від агента так:
ssh-add -D
Зробивши це, тоді запустіть агент SSH як фоновий процес, наприклад:
eval "$(ssh-agent -s)"
Тепер це стає дивно, і я не дуже впевнений, чому. У деяких випадках ви можете спеціально додати ~/.ssh/id_rsa.pub
ключ / ідентифікатор до агента так:
ssh-add ~/.ssh/id_rsa.pub
Введіть свою парольну фразу, натисніть, Returnі вам слід добре піти.
Але в інших випадках просто запуску цього достатньо, щоб додати ключ / ідентифікацію:
ssh-add -K
Якщо це все спрацювало, введіть, ssh-add -l
і ви повинні побачити один самотній ключ / ідентифікатор SSH у списку.
Все добре? Тепер відкрийте свої .bash_profile
:
nano ~/.bash_profile
І додайте цей рядок донизу; коментуйте або видаліть -A
версію, якщо у вас є така:
ssh-add -K 2>/dev/null;
Це дозволить передати ключ SSH-ключ / ідентичність на агент SSH під час кожного запуску / перезавантаження.
ОНОВЛЕННЯ: Apple тепер додала UseKeychain
опцію до відкритих параметрів конфігурації SSH, а також розглядає ssh-add -A
рішення.
Станом на macOS Sierra 10.12.2, Apple (я припускаю) додала UseKeychain
опцію конфігурації для конфігурацій SSH. Перевірка довідкової сторінки (через man ssh_config
) показує таку інформацію:
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored
into the keychain once it has been verified to be correct. The
argument must be ``yes'' or ``no''. The default is ``no''.
Що зводиться до Apple, бачачи рішення як додавання ssh-add -A
до вашого, .bash_profile
як пояснено в путівці на Open Radar, так і UseKeychain
як одне з варіантів для кожного користувача ~/.ssh/config
.