Я установил свой закрытый ключ SSH ~/.ssh/id_rsa
и установил для него разрешения 0600
. Когда я подключаюсь к SSH-серверу, который использует мой закрытый ключ в Terminal.app через ssh
, появляется диалоговое окно, в котором меня просят ввести пароль для доступа к id_rsa
файлу:
Я вижу тот же диалог, когда подключаюсь к FTP-серверу с клиентом Interarchy GUI.
Обновление: я вижу это диалоговое окно каждый раз, когда подключаюсь, независимо от того, проверяю ли я «Запомнить пароль в моей связке ключей». Он появляется еще два раза, если нажата кнопка OK, независимо от того, что введено в поле пароля.
Когда я ослабляю эти разрешения, скажем, до 0640
, я больше не вижу диалоговое окно с запросом моего пароля, но ssh
прерывается со следующей ошибкой:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @ ВНИМАНИЕ: НЕЗАЩИЩЕННЫЙ ФАЙЛ ЧАСТНОГО КЛЮЧА! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ Разрешения 0640 для «/Users/myusername/.ssh/id_rsa» слишком открыты. Рекомендуется, чтобы ваши файлы закрытых ключей НЕ были доступны другим. Этот закрытый ключ будет проигнорирован. плохие разрешения: игнорируйте ключ: /Users/myusername/.ssh/id_rsa
Я нахожу диалоговое окно с паролем чрезвычайно раздражающим, и я уверен, что должен быть какой-то способ избежать закрытия этого диалогового окна, необходимого SSH для доступа к id_rsa
файлу.
Примечание. Я использую Mac OS X 10.6.8.
Убедитесь, что у вас есть соответствующий id_rsa.pub
или id_dsa.pub
в вашем ~/.ssh
каталоге.
Когда у меня был, id_rsa
но не соответствующий id_rsa.pub
, Mac OS X продолжала появляться в диалоговом окне, и помните, что пароль в моей связке ключей ничего не делал.
cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub
сгенерировал для меня соответствующий файл открытого ключа.
Если у вас уже был там ваш открытый файл (переименуйте его в другое имя) и снова сгенерируйте открытый ключ с помощью приведенной выше команды, вы заметите, что сгенерированный и старый не равны. Каким-то образом более старые версии Mac OS X генерировали открытый ключ, который Lion больше не нравится, его повторное создание исправляет это.
Для любопытных ключ точно такой же, часть, которая меняется, заключается в том, что больше нет раздела «комментарии» после ключа в файле.
Сначала запустите 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.
chmod 600
(вместо 644), чтобы он работалssh-add -K
решил мою проблемуssh-add -K
исправил мою проблему. Спасибо! Не уверен, что помешало ему работать в первую очередь./usr/bin/ssh-add -K ~/.ssh/mykey
В моем случае ssh-add -K
это не помогло, мне пришлось указать ключ:
ssh-add ~/.ssh/id_rsa
-K
вариантов. Ваше решение исправил это. Интересно, зачем мне нужно было это делать. Никогда не было никаких запросов пароля.-K
меня флаг работал на Sierra 10.12.2Для macOS 10.12 Sierra ssh-add -K
необходимо запускать после каждой перезагрузки. Чтобы избежать этого, создайте ~/.ssh/config
с этим контентом.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Apple добавила техническую заметку 2449 , в которой объясняется, что произошло.
До macOS Sierra ssh отображал диалоговое окно с запросом вашей парольной фразы и предлагал возможность сохранить ее в связке ключей. Некоторое время назад этот пользовательский интерфейс устарел и был удален.
Изменить: по-видимому, указывать хост и ключ не нужно. Просто добавить это достаточно.
AddKeysToAgent yes
UseKeychain yes
AddKeysToAgent
на верхний уровень ~/.ssh/config
.Вы должны где-то ввести парольную фразу для закрытого ключа, а OS X по умолчанию использует ssh-agent.
Если вы хотите использовать ssh-agent, но хотите избежать диалогового окна графического интерфейса, вы можете использовать ssh-add, чтобы добавить парольную фразу к агенту, а затем ssh, как обычно.
Если вы не хотите использовать ssh-agent и вместо этого имеете приглашение ssh для фразы-пароля, отключите переменную среды SSH_AUTH_SOCK.
ssh-add -K
мне не нужно вводить пароль для подключения, но приглашение все равно появляется; Я просто отвергаю это.ssh-add -K
и ввел свой пароль, в следующий раз, когда я попытаюсь подключиться к рассматриваемому серверу ssh, я все равно увижу запрос пароля Mac OS X.Когда вы ослабляете разрешения, ключ игнорируется. Вы ничего не добьетесь этим.
Если вы хотите использовать ключ без необходимости каждый раз вводить пароль, у вас есть два варианта.
Если вы установите флажок «Запомнить пароль в моей связке ключей», вам не придется вводить пароль каждый раз: он будет храниться в связке ключей вместе со всеми другими вашими паролями. Это рекомендуемый вариант.
Вы можете создать файл закрытого ключа без пароля. Вы можете изменить существующий файл закрытого ключа, чтобы он не был защищен паролем (изменение пароля влияет только на файл ключа, а не на сам ключ). В командной строке запустите ssh -p
, введите существующую парольную фразу и оставьте поле для новой парольной фразы пустым. Наличие пустой парольной фразы сопряжено с риском для безопасности: любой, кто может получить доступ к вашему файлу закрытого ключа (например, получив доступ к вашим резервным копиям), может использовать его мгновенно.
если вы добавили свой закрытый ключ в исходный каталог ~/.ssh и ввели ssh-add -K, чтобы добавить его в цепочку для ключей, и у вас есть содержимое открытого ключа, скопированное в .ssh/authorized_keys (для правильного account) на целевом сервере диалоговое окно исчезает.
это сложная комбинация файлов, разрешений, местоположений и команд, поэтому это может занять время. я бы не торопился с выводами о багах.
У меня точно такая же проблема на Lion (Mac OS X 10.7). Я думаю, это ошибка ... Если аутентификация ssh является паролем, клиент сначала проходит через открытый ключ, что нормально. Однако, даже если вы решите сохранить парольную фразу в связке ключей (что не требуется для аутентификации по паролю), в следующий раз, когда будет установлено новое ssh-соединение, вас снова попросят ввести парольную фразу...
Не должно быть необходимости регенерировать ваши открытые ключи. Вы можете просто выполнить эти две команды:
chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa
По сути, вам нужно ужесточить права доступа к файлу открытого ключа и добавить свой ключ в агент аутентификации OSX.
В последней версии macOS (10.12.2 — Sierra) это легко исправить. Просто отредактируйте файл ~/.ssh/config и включите опцию UseKeychain:
Host *
UseKeychain yes
Сохранить и решить.
Эта проблема возникла в моей системе OS X 10.7.4, когда ssh-agent умер. Перезагрузка устранила проблему. (Вы можете попробовать перезапустить ssh-agent, но я не знаю, достаточно ли умна цепочка для ключей, чтобы подобрать новый сокет ssh-agent.)
Убедитесь, что в ~/.ssh/ указан chmod 700.
Убедитесь, что оба файла ~/.ssh/id* имеют chmod 600.
Запустите /Applications/Utilities/Keychain Access.app и восстановите связку ключей.
Выйти. (Перезагрузка не была бы ужасной идеей)
Авторизоваться
Если проблема не устранена, переместите существующие файлы ~/.ssh/id* на рабочий стол и попробуйте сгенерировать новые ключи с помощью ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tld
и посмотрите, будут ли новые ключи работать лучше.
Я на Lion, но IIRC Snow Leopard работал так же.
ps - любой, кто предлагает использовать пустую фразу-пароль ssh, должен быть вынужден носить табличку, чтобы другие люди знали, что не следует следовать их советам.
У меня не работает повторное создание открытого ключа (10.8) и создание нового ключа SSH. Если я, например, запускаю git pull после блокировки цепочки для ключей входа, появляется диалоговое окно с запросом пароля к ключу вместо того, чтобы сначала пытаться получить пароль из цепочки для ключей входа.
Однако, если я сначала убью ssh-agent, мне будет предложено ввести пароль цепочки ключей для входа, который затем извлекает пароль ключа SSH.
Еще один интересный вывод: если вы скопируете и вставите содержимое файла PEM, в конце может отсутствовать тире. Поэтому просто не забудьте добавить последнюю строку:
-----END RSA PRIVATE KEY-----
Мне пришлось сделать следующие шаги, чтобы заставить его работать.
# 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 git@github.com
Последняя команда должна вывести что-то вроде:Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.
У меня такая же проблема. Кажется, я исправил это, сделав это.
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 минут. Я целую вечность гуглил, чтобы узнать, есть ли другие упоминания об этом. Этот сайт был единственным!
Оуайн.
У меня была похожая проблема. Оказалось, что закрытый ключ, который я использовал, был в неправильном формате. Я использовал генератор ключей PuTTY на своей машине Win, а ssh в OS X ожидает другого формата — формата Open SSH.
Оказалось, что инструмент, который я использовал для генерации этого ключа (генератор ключей PuTTY), имел возможность преобразовать мой закрытый ключ в формат, требуемый Open SSH.
Просто как:
Файл, который вы сохраните, содержит исходный закрытый ключ в правильном (OpenSSH) формате.
Убедитесь, что:
Надеюсь, это должно решить проблему.
Используйте ключ .pem, а не ключ .ppk.
Алекс Рекэри
ббонамин
Уоррен Пенья
Дэнни Энгландер
Себастьян Састре
зигг
Мальвим
Лукаш
фикси
Джанака Р. Раджапакша
Ян С.
-y
ssh-keygen используется для «чтения частного файла формата OpenSSH и вывода открытого ключа OpenSSH на стандартный вывод» — пожалуйста, прочтите справочную страницу для ssh-keygen, прежде чем выдавать подобные предупреждения. Ответ правильный.