OSX ssh-agent: нет вставки пароля, и проблема с PKCS # 8?

37

Я использую ssh на своей машине и установил длинную, не удобную для людей фразу-пароль, которая сохраняется в моем менеджере паролей. Что каждый раз сводит меня с ума, так это то, что я не могу вставить окно, изображенное ниже. Я знаю Remember password in my keychainвариант и использую его. Иногда я должен ввести новый, хотя. Почему я не могу вставить в поле пароля?

То же самое для диалогового окна, которое появляется при подключении зашифрованных дисков.

окно ssh-agent

Некоторые обновления:

  1. Я узнал, как я могу обойти диалог: просто используйте ssh-add -K ~/.ssh/id_rsa, а затем я могу вставить фразу-пароль в терминал.
  2. Как упомянул mattmcmanus, мой Ключ зашифрован с использованием, pkcs8которое было взломано на ssh-агенте Йосемити. Это не связано с вышеупомянутой проблемой, но в то же время мне приходило в голову (читай здесь ).
  3. использование по- ssh-add прежнему не исправляет это для зашифрованных дисков.
Joni
источник
Вы должны принять один из хороших ответов ниже. Вам также следует избегать задавать несколько вопросов в одном посте.
Ален О'Ди
1
@ AlainO'Dea Во-первых, да, я должен, это старый вопрос, и я забыл об этом. Хотя, во-вторых, во время запроса было неясно, возникнет ли вторая проблема (неисправная PKCS), см. Историю изменений.
Джони

Ответы:

22
  1. Диалоговое окно для SSH-агента может быть обойдено путем добавления ключа в консоли / терминале: ssh-add ~/.ssh/id_rsa. Затем вы можете вставить пароль в терминал. Кроме того, добавление -Kопции к ssh-addсохранит ее в цепочку для ключей согласно комментарию Оливера Лаканса.
  2. Как сказал mattmcmanus, id_rsaшифрование с использованием PKCS, похоже, нарушено в ssh-агенте OSX Mavericks. Быстрый обходной путь - расшифровать файл ключа и снова зашифровать его с помощью стандартной процедуры ssh (метод получения ключа: MD5 ...):

mv id_rsa id_rsa.pkcs
openssl rsa -in id_rsa.pkcs -out id_rsa
# enter passphrase to decrypt
chmod 0600 id_rsa
ssh-keygen -f id_rsa -p
# enter passphrase to encrypt again
Joni
источник
3
Хотя ответ Джони отличный, я бы порекомендовал, в соответствии с ssh-add -K ~/.ssh/id_rsaкоторым «Храните пароли в своей цепочке для ключей» ssh-add --help. Это избавит вас от необходимости повторного запуска при ssh-addкаждом открытии новой вкладки оболочки или при перезагрузке компьютера.
Оливье Лакан
2

Это ключ PKCS # 8 и ты на мэйверикс? Если так, то это, похоже, полностью обанкротилось. Не уверен, что есть решение.

mattmcmanus
источник
1
почему это должно быть? Пока проблема в том, что поле пароля в диалоговом окне не поддерживает вставку. Это уже существовало на 10.8, но из-за обновления до 10.9 я должен снова ввести ключевую фразу.
Джони
Хорошо, вы, кажется, правы ... посмотрите на мой собственный ответ.
Джони
2

В Mac OS X El Capitan команда ssh-add может сделать это с опцией -K :

$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/your.username/.ssh/id_rsa:

Вы можете вставить свой пароль в это приглашение с помощью ⌘-V .

Сессия для этого выглядит так:

$ ssh-add -K ~/.ssh/id_rsa
Enter passphrase for /Users/your.username/.ssh/id_rsa:
Passphrase stored in keychain: /Users/your.username/.ssh/id_rsa
Identity added: /Users/your.username/.ssh/id_rsa (/Users/your.username/.ssh/id_rsa)

Соответствующая выдержка из SSH-ADD (1) с man ssh-add :

-K При добавлении идентификаторов каждая фраза-пароль также будет храниться в вашей цепочке для ключей. При удалении идентификаторов с помощью -d каждая ключевая фраза будет удалена из вашей цепочки для ключей.

ПРИМЕЧАНИЕ . Ваш пароль не будет показан в оболочке, но будет открыт для всех запущенных приложений через буфер обмена. Решение автотипа будет более безопасным.

Ален О'Ди
источник
1

Вы можете запустить такой скрипт в редакторе AppleScript:

tell application "System Events" to tell process "SecurityAgent"
    set value of text field 2 of scroll area 1 of group 1 of window 1 to "pa55word"
    click button 2 of group 2 of window 1
end tell
LRI
источник
1
спасибо, это поможет для диалогов «Зашифрованные диски». Но почему яблоко отключило это поле для вставки ???
Джони
Удобно, но да, не думайте, что это решает проблему PKCS # 8, где, даже если вы введете правильный пароль, он скажет неверную фразу-пароль.
Боб Аман
Не имеет смысла. Теперь ваш сверхсекретный пароль открыт для всех. Вот почему TS использует диспетчер паролей, чтобы ее пароли были централизованы и надежно защищены.
whaefelinger
1
Не работает на El Capitan. Сначала он просит редактора сценариев получить вспомогательный контроль, как System Events got an error: Script Editor is not allowed assistive access. только это разрешено в Системных настройках | Безопасность и конфиденциальность, которые я получаюSystem Events got an error: Can’t get window 1 of process "SecurityAgent". Invalid index.
Alain O'Dea
1

У меня такая же проблема. После нахождения этого вопроса я продолжал искать и нашел ответ в другом месте. Это старый вопрос, но он не имеет принятых ответов и по-прежнему занимает высокое место в списках поиска. (не уверен в этике стека обмена).

RE не в состоянии копировать / вставлять: очевидно, это дизайн. Цель состоит в том, чтобы запретить любой доступ к полю из буфера обмена, чтобы вредоносная программа не смогла очистить поля паролей. Я думаю, что вставка (а не резка) должна быть разрешена, но, возможно, есть какая-то техническая причина.

Что касается ssh-agent, то для (по крайней мере) Yosemite -Kопция in ssh-add -K ~/.ssh/blahделает то, что вам нужно - введите пароль один раз, он будет сохранен в вашей цепочке для ключей, и ssh-agent будет прозрачно разблокирован для вас. Чтобы попытаться быть более безопасным, я помещаю свои пароли ssh в отдельную цепочку для ключей, которая периодически блокируется.

PerilousApricot
источник
Есть ли шанс, что вы могли бы поделиться ссылкой на ответ, который вы нашли?
Джон Карни
Прости за это! Что касается материала ssh-agent, я наткнулся на developer.apple.com/library/mac/documentation/Darwin/Reference/…
PerilousApricot
0

Использование brew openssl и openssh решает проблему.

brew update
brew install openssl
brew link openssl --force
brew install openssh

# confirm correct bins are being used
# both should be located in /usr/local/bin
which openssl
which openssh

# add key back to keychain
ssh-add ~/.ssh/id_rsa

Я не уверен, что принудительное связывание openssl нарушает что-либо на Mavricks. До сих пор я не заметил никаких проблем.

simple10
источник
1
Нет (больше) brewформулы для openssh.
Адам Литер
Есть еще brew tap homebrew/dupesоднако. Тем не менее, эти шаги не решили эту проблему для меня.
Боб Аман
@ simple10 Этот ответ мало что дает. Вы должны по крайней мере предоставить версию openssl / openssh, которая решает проблему. Дополнительно, пожалуйста, опишите, почему это так.
whaefelinger