macOS продолжает спрашивать мою парольную фразу ssh с тех пор, как я обновился до Sierra
Раньше он запоминал парольную фразу, но теперь спрашивает ее каждый раз.
Я прочитал, что мне нужно восстановить открытый ключ с помощью этой команды, которую я сделал:
ssh-keygen -y -f id_rsa > id_rsa.pub
но это ничего не исправило.
Как я могу заставить macOS снова запомнить мою пароль?
14 ответов
В последней версии macOS (10.12.2) это легко исправить. Просто отредактируйте свой ~/.ssh/config
и включить UseKeychain
опция:
Host *
UseKeychain yes
Больше не нужно ничего менять. Теперь все работает так, как раньше, до последних обновлений. Вам не нужно добавлять ключи к ssh-agent
,
Редактировать: Вам все равно может понадобиться ввести пароль один раз. Если вы этого не знаете, следуйте этим инструкциям, чтобы раскрыть это.
У меня такая же проблема. MacOS Sierra связка ключей продолжает запрашивать пароль. Ваш id_rsa должен быть зашифрован парольной фразой для безопасности. Затем попробуйте добавить его в цепочку для ключей ssh-add -K ~/.ssh/id_rsa
Если ваш ключ находится в другой папке, чем ~/.ssh
затем замените на правильную папку.
Keychain теперь знает ваш ключ ssh и, надеюсь, теперь все работает (мой сделал)
Это исправило мою похожую проблему:
/usr/bin/ssh-add -K
Это хранит пароли в вашей цепочке для ключей.
Обновление (спасибо @EasyCo): это работает, но не сохраняется между перезапусками. Решение @jukka-suomela на этой странице работает при перезапуске. Вы можете найти этот ответ здесь:
Мне нужно было ввести правильный пароль только один раз, и он начал работать. Проблема заключалась в том, что я не запомнил исходную парольную фразу SSH, но восстановил ее, выполнив следующие действия из Github:
- В Finder найдите приложение Keychain Access.
- В Keychain Access найдите SSH.
- Дважды щелкните запись для вашего ключа SSH, чтобы открыть новое диалоговое окно.
- Диалог доступа к цепочке для ключей. В левом нижнем углу выберите Показать пароль.
- Вам будет предложено ввести пароль администратора. Введите его в диалоговом окне "Доступ к связке ключей".
- Ваш пароль будет раскрыт.
Одним из исправлений является добавление следующего в ваш файл ~/.ssh/config:
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
UseKeychain yes
Взято из: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Также см.: https://apple.stackexchange.com/a/264974/3810
Ни одно из вышеперечисленных решений не сработало после установки Sierra поверх El Capitan на новый MacBook Pro. Sierra по своему дизайну не сохраняет ключи SSH в цепочке для ключей.
Два решения работали для меня. Одним из них является добавление команды ssh-add -A &> /dev/null
в ~/.bash_profile. Каждый раз, когда вы открываете терминал, эта команда будет выполняться (&> /dev/null
part отправляет вывод команды в файл /dev/null).
Более сложное, но немного более простое решение - создать список с командой, которая выполняется каждый раз при загрузке ОС, как это предлагается в разделе Сохранение ключей SSH в цепочке ключей MacOS Sierra. Это включает в себя использование Xcode для создания файла.
Я попробовал несколько ответов здесь, но все еще были проблемы с передачей удаленных ключей (например, при использовании capistrano). Чтобы решить эту проблему, я прочитал technote от apple и сделал этот мой конфигурационный файл. Больше не спрашиваю мой пароль!
https://developer.apple.com/library/content/technotes/tn2449/_index.html
Host * IdentityFile ~/.ssh/id_rsa IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes
Этим утром у меня возникла та же проблема, что и у вас после обновления до Sierra. В моем случае id_rsa
файл был зашифрован и после расшифровки он работал как шарм.
- Проверьте, если ваш
id_rsa
файл зашифрован с помощью следующей команды:cat ~/.ssh/id_rsa | head -2
- Если вторая строка говорит
Proc-Type: 4,ENCRYPTED
, он зашифрован, и вы можете попробовать расшифровать его - Важно: сделайте резервную копию вашего оригинала
id_rsa
файл! Используйте командуcp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
- Расшифруйте свой закрытый ключ с
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
- Удалить оригинальный ключ (
rm ~/.ssh/id_rsa
) и замените его на расшифрованный:mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa
После этих шагов вы сможете снова использовать ssh.
Я начал страдать от той же проблемы при использовании MacOS Monterrey. Я только что заметил, что когда я попытался добавить свой ключ, используя:
/usr/bin/ssh-add -K /path/to/my-key
Я видел это:
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
Поэтому я использовал:
/usr/bin/ssh-add --apple-use-keychain /path/to/my-key
Добавлен этот ответ, если кто-то еще страдает от этого, используя MacOS Monterrey.
У меня также была эта проблема при попытке развернуть некоторый код с помощью 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
,
Jukka Suomela ответ правильный, но если вы используете openssh
установлен из homebrew
, то вам также нужно удалить его с помощью:
brew remove openssh
... чтобы вернуться к системному стандартному openssh, потому что доморощенный не поддерживает UseKeychain
запись конфигурации ssh.
Тебе необходимо .plist
файл добавлен в ~/Library/LaunchAgents/
бежать ssh-add -A
при каждом запуске macOS.
Есть одна команда, которая делает это (из https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain):
curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
Я перепробовал все предложенные здесь решения, но у меня на Mac не установлена цепочка для ключей.
Добавление к следующей строке вверху .ssh/config
У меня файл работал как на локальной, так и на удаленной машине.
PubkeyAcceptedKeyTypes=+ssh-dss
В моем случае ssh запросил пароль, потому что я пытался подключиться без указания имени пользователя:
ssh hostname.com
Удаленный хост считает это подключением под root. Исправлено использование моего имени пользователя удаленного хоста:
ssh username@hostname.com