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 прежнему не исправляет это для зашифрованных дисков.

Вы должны принять один из хороших ответов ниже. Вам также следует избегать задавать несколько вопросов в одном посте.
Ален О'Ди

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

3
Хотя ответ Джони отличный, я бы порекомендовал, в соответствии с ssh-add -K ~/.ssh/id_rsaкоторым «Храните пароли в своей цепочке для ключей» ssh-add --help. Это избавит вас от необходимости повторного запуска при ssh-addкаждом открытии новой вкладки оболочки или при перезагрузке компьютера.
Оливье Лакан

2

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


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

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 в отдельную цепочку для ключей, которая периодически блокируется.


Есть ли шанс, что вы могли бы поделиться ссылкой на ответ, который вы нашли?
Джон Карни

Прости за это! Что касается материала 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. До сих пор я не заметил никаких проблем.


1
Нет (больше) brewформулы для openssh.
Адам Литер

Есть еще brew tap homebrew/dupesоднако. Тем не менее, эти шаги не решили эту проблему для меня.
Боб Аман

@ simple10 Этот ответ мало что дает. Вы должны по крайней мере предоставить версию openssl / openssh, которая решает проблему. Дополнительно, пожалуйста, опишите, почему это так.
whaefelinger
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.