Диалоговое окно «Пароль» появляется, если для прав доступа к секретному ключу SSH установлено значение 0600

Я установил свой закрытый ключ SSH в ~/.ssh/id_rsa и установил его права на 0600. Когда я подключаюсь к SSH-серверу, который использует мой закрытый ключ в Terminal.app через ssh, появляется диалоговое окно и просит ввести пароль для доступа к файлу id_rsa:

введите описание изображения здесь>> </p>

<p> Я вижу тот же диалог, когда подключаюсь к FTP-серверу с клиентом интерфейса Interarchy. </p>

<p> <b> Обновление: </b> Я вижу этот диалог каждый раз, когда подключаюсь независимо от того, проверяю ли я «Запомнить пароль в моей цепочке ключей». Он появляется еще два раза, если нажать кнопку OK, независимо от того, что введено в поле пароля. </p>

<p> Когда я расслабляю эти разрешения, скажем, <code>0640</code>, я больше не вижу диалоговое окно с запросом пароля, но <code>ssh</code> прерывается со следующей ошибкой: </p >

<pre>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@
@ ПРЕДУПРЕЖДЕНИЕ: НЕПРЕРЫВНЫЙ ЧАСТНЫЙ КЛЮЧЕВОЙ ФАЙЛ! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
Разрешения 0640 для '/Users/myusername/.ssh/id_rsa' слишком открыты.
Рекомендуется, чтобы ваши файлы закрытых ключей НЕ были доступны другим пользователям.
Этот закрытый ключ будет проигнорирован.
bad permissions: игнорировать ключ: /Users/myusername/.ssh/id_rsa</pre>

<p> Я считаю, что диалог с паролем крайне раздражает, и я уверен, что должен быть какой-то способ избежать отклонения этого диалогового окна. SSH необходимо получить доступ к файлу <code>id_rsa</code>. </p>

<p> Примечание. Я запускаю Mac OS X 10.6.8. </p></body></html>

71 голос | спросил titaniumdecoy 24 J000000Sunday11 2011, 09:39:38

19 ответов


70

Убедитесь, что у вас есть соответствующий id_rsa.pub или id_dsa.pub в каталоге ~/.ssh.

Когда у меня был id_rsa, но не соответствующий id_rsa.pub, Mac OS X продолжал всплывать диалог и помнить, что passowrd в моей цепочке ключей ничего не делал.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

создал для меня соответствующий файл открытого ключа.

Если у вас уже есть свой общедоступный файл (переименуйте его на другое имя) и сгенерируйте открытый ключ снова, используя указанную выше команду, вы заметите, что сгенерированный и старый не равны. Как-то более старые версии Mac OS X сгенерировали открытый ключ, который Lion больше не нравится, и его создание снова исправляет это.

Для любопытных ключ точно такой же, часть, которая изменяется, состоит в том, что после ключа в файле больше нет комментариев.

ответил Constantine Sapuntzakis 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2011 02:41:49 +0400 2011, 02:41:49
89

Сначала запустите ssh-add -K и проверьте, устраняет ли это вашу проблему.

Если нет:

  • Удален файл rsa_id.pub и восстановлен новый (должен быть в ~ /.ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
    
  • Заданным разрешениям было установлено значение 600 для id_rsa и id_rsa.pub (должно быть в ~ /.ssh /):

    chmod 600 id_rsa*
    
  • Выполните следующую команду:

    ssh-add -K
    

После этого мне больше не было предложено предоставить пароль для личного ключа. По-видимому, это фактически помещает пароль секретного ключа в правильное место привязки ключей для OS X.

ответил Reed 21 J000000Monday14 2014, 22:59:13
20

В моем случае ssh-add -K не выполнял трюк, мне нужно было указать ключ:

ssh-add ~/.ssh/id_rsa
ответил nathancahill 8 AMpWed, 08 Apr 2015 06:37:36 +030037Wednesday 2015, 06:37:36
15

Для macOS 10.12 Sierra ssh-add -K необходимо запустить после каждой перезагрузки. Чтобы избежать этого, создайте ~/.ssh/config с этим контентом.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Apple добавила Technote 2449 , в котором объясняется, что произошло .

  

До macOS Sierra ssh представит диалог с запросом вашей фразы и предложит возможность сохранить его в цепочке ключей. Этот пользовательский интерфейс был устаревшим некоторое время назад и был удален.

Изменить: очевидно, что указание хоста и ключа не требуется. Просто добавить это достаточно.

AddKeysToAgent yes
UseKeychain yes
ответил orkoden 15 ThuEurope/Moscow2016-12-15T16:17:54+03:00Europe/Moscow12bEurope/MoscowThu, 15 Dec 2016 16:17:54 +0300 2016, 16:17:54
12

Вы должны ввести кодовую фразу для частного ключа где-нибудь, а OS X по умолчанию использует ssh-agent.

Если вы хотите использовать ssh-agent, но хотите избежать диалогового окна gui, вы можете использовать ssh-add для добавления кодовой фразы к агенту, а затем ssh, как обычно.

Если вы не хотите использовать ssh-agent и вместо этого запрашиваете ssh для кодовой фразы, отключите переменную среды SSH_AUTH_SOCK.

ответил zzz 9 AM00000010000004431 2011, 01:40:44
8

Когда вы расслабляете разрешения, ключ игнорируется. Вы ничего не выиграете, сделав это.

Если вы хотите использовать ключ без необходимости вводить пароль каждый раз, у вас есть два варианта.

Если вы отметите «Запомнить пароль в моей цепочке ключей», вам не нужно будет вводить пароль каждый раз: он будет храниться в цепочке ключей со всеми вашими другими паролями. Это рекомендуемый вариант.

Вы можете создать файл закрытого ключа без пароля. Вы можете изменить существующий файл закрытого ключа, чтобы он не защищен паролем (изменение пароля влияет только на файл ключа, а не на сам ключ). В командной строке запустите ssh -p, введите существующую кодовую фразу, а затем оставьте новую кодовую фразу пустой. Существует риск безопасности при наличии пустой фразы: любой, кто может получить доступ к вашему файлу закрытого ключа (например, путем доступа к вашим резервным копиям), может использовать его мгновенно.

ответил Gilles 24 J000000Sunday11 2011, 17:06:27
5

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

это сложная комбинация файлов, разрешений, местоположений и команд, поэтому это может занять некоторое время. я бы не спешил к выводу об ошибках.

ответил David Griffis 8 ThuEurope/Moscow2011-12-08T05:41:22+04:00Europe/Moscow12bEurope/MoscowThu, 08 Dec 2011 05:41:22 +0400 2011, 05:41:22
3

У меня точно такая же проблема для Lion (Mac OS X 10.7). Я думаю, это ошибка ... Если SSH-аутентификация является паролем, клиент сначала переходит через открытый ключ, что является нормальным. Однако, даже если вы решили сохранить кодовую фразу на цепочке ключей (которая не требуется для аутентификации пароля), в следующий раз, когда будет установлено новое соединение ssh, вас снова попросят ввести парольную фразу ...

ответил Stefan 3 AM00000010000004131 2011, 01:19:41
3

Не нужно обновлять открытые ключи. Вы можете просто выполнить эти команды two :

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

В принципе, вам необходимо закрепить права доступа к файлу открытого ключа, и вам нужно добавить свой ключ к агенту проверки подлинности OSX.

ответил rouble 5 MonEurope/Moscow2016-12-05T19:03:37+03:00Europe/Moscow12bEurope/MoscowMon, 05 Dec 2016 19:03:37 +0300 2016, 19:03:37
3

В последней версии macOS (10.12.2 - Sierra) это простое решение. Просто отредактируйте конфигурацию ~ /.ssh /config и включите опцию UseKeychain:

Host *
UseKeychain yes

Сохранить и решить.

ответил Ricardo Mendes 10 Jam1000000amTue, 10 Jan 2017 03:16:22 +030017 2017, 03:16:22
2

Эта проблема возникла в моей системе OS X 10.7.4, когда ssh-agent умер. Проблема была исправлена. (Вы можете попробовать перезапустить ssh-agent, но я не знаю, достаточно ли Keychain, чтобы забрать новый сокет ssh-agent.)

ответил Troy J. Farrell 13 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 13 Sep 2012 05:42:11 +0400 2012, 05:42:11
1

Регенерация открытого ключа, похоже, не работает для меня (10.8), и не генерирует новый ключ SSH. Если я, например, запустил git pull после блокировки брелка для входа в систему, появится диалоговое окно, чтобы потребовать пароль к ключу, а не сначала попытаться получить пароль из брелка для входа.

Однако, если я сначала удалю ssh-agent, мне будет предложено ввести пароль логина входа в систему, который затем извлекает пароль ключа SSH.

ответил blarf 12 AM000000120000003931 2013, 00:49:39
1
  1. Убедитесь, что ~ /.ssh /is chmod 700.

  2. Убедитесь, что файлы ~ /.ssh /id * оба являются chmod 600.

  3. Запустить /Приложения /Утилиты /Keychain Access.app и восстановить цепочку ключей.

  4. Выход. (Перезагрузка не была бы ужасной идеей)

  5. Войти

  6. Если проблема не устранена, переместите существующие файлы ~ /.ssh /id * на рабочий стол и попробуйте создать новые ключи, используя ssh-keygen -t dsa -f ~/.ssh/id_dsa -C [email protected] и посмотрите, работают ли новые ключи.

Я на льве, но IIRC Snow Leopard работал так же.

ps - любой, кто предлагает использовать пустую кодовую фразу ssh, должен быть вынужден носить знак, чтобы другие люди знали, что не должны советоваться с ними.

ответил TJ Luoma 8 ThuEurope/Moscow2011-12-08T11:36:07+04:00Europe/Moscow12bEurope/MoscowThu, 08 Dec 2011 11:36:07 +0400 2011, 11:36:07
1

Еще один интересный вывод - копирование & вставьте содержимое файла PEM, у вас может быть окончание отсутствия тире. Поэтому просто не забудьте добавить финальную строку, как

-----END RSA PRIVATE KEY-----
ответил Fang 14 AMpThu, 14 Apr 2016 09:02:29 +030002Thursday 2016, 09:02:29
1

Мне пришлось сделать следующие шаги, чтобы заставить его работать.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub [email protected]

Последняя команда должна вывести что-то вроде: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.

ответил netbrain 24 Mayam16 2016, 11:49:01
0

У меня была та же проблема. Я, кажется, исправил это, сделав это.

1) Резервное копирование путем переименования в старые файлы id_dsa и id_dsa.pub.

2) Запустите новый кейген с пустой парольной фразой.

Работает с заданием периода запуска, отслеживающим удаленный сервер, а также вход в систему из ssh в терминале.

У меня есть функция быстрого запуска функции в моем терминале, так как у меня есть следующее в моем .bash_profile

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Итак, быстрый authme remoteserver.com скопирует новый удаленный ключ.

Я думаю, что ошибка связана с тем, что кодовая фраза не преобразуется (у моего старого Snow Leopard не было никого).

Попробуйте и посмотрите, помогает ли она.

Это не заняло более 10 минут. Я всю жизнь проводил поиски в Интернете, чтобы узнать, есть ли другие упоминания об этом. Этот сайт был единственным!

Оуайн.

ответил user9563 8 PM000000110000004331 2011, 23:06:43
0

У меня была подобная проблема. Оказалось, что закрытый ключ, который я использовал, был неправильным. Я использовал PuTTY Key Generator на моей машине Win, а ssh на OS X ожидает другой формат - Open SSH format.

Оказалось, что инструмент, который я использовал для генерации этого ключа (PuTTY Key Generator), имел возможность конвертировать мой приватный ключ в формат, необходимый Open SSH.

Прост как:

  1. Открыть генератор ключей PuTTY
  2. Загрузите свой закрытый ключ
  3. Выберите «Конверсии»> Экспорт ключа OpenSSH.

Файл, который вы сохраните, содержит исходный закрытый ключ в правильном формате (OpenSSH).

ответил Greg 9 Maypm16 2016, 23:24:51
0

Пожалуйста, убедитесь, что:

  1. Вы используете формат pem для своего закрытого ключа. Это связано с тем, что Mac использует клиент openssh, который работает с pem. ppk является проприетарным форматом putty и несовместим с openssh. Вы можете легко конвертировать ppk в pem с помощью keygen, Если у вас есть только ppk.
  2. Разрешения на ваш файл pem равны 600. Частные ключи предназначены только для доступа только их владельцем. Таким образом, если разрешения дают доступ для чтения к любому другому, это будет считаться угрозой безопасности.

Это, надеюсь, решит проблему.

ответил Sasidhar Sekar 19 PMpWed, 19 Apr 2017 16:02:51 +030002Wednesday 2017, 16:02:51
-1

Используйте ключ .pem, а не ключ .ppk.

ответил Abhi 15 J000000Wednesday15 2015, 00:51:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132