Назад | Перейти на главную страницу

Простой вопрос об открытом / закрытом ключах SSH

Я пытаюсь изучить это, а не просто следовать руководствам, поэтому я могу рекомендовать правильные действия, когда люди спрашивают (а они это делают). Вот что я получил.

Сначала сгенерируйте оба ключа с помощью такой команды:

ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa

Затем вы вставляете публичную часть ключа в файл authorized_keys2

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2

(а затем chmod его до 600 или аналогичного)

И вы загружаете закрытый ключ на свой компьютер (id_rsa) и вводите его в Putty для чтения и аутентификации.

Это правильные шаги для настройки аутентификации с открытым / закрытым ключом для входа без пароля по SSH?

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

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

Поскольку вы используете пары ключей ssh ​​для (попытки) решения некоторых проблем, связанных с аутентификацией по паролю, вы обычно хотите делать это следующим образом:

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

  • Публикуйте открытый ключ повсюду. Я храню свои открытые ключи на веб-сайте, чтобы я мог получить их, когда они мне понадобятся. Поместите открытый ключ в соответствующий authorized_keys файлы в системах, к которым вы будете подключаться.

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

Возможно, лучше сгенерировать ключ в клиентской системе (ах). Вы можете получить больший файл authorized_keys, но легче отключить скомпрометированную систему. Если вы переносите закрытый ключ сервера, вам нужно будет повторно сгенерировать и перенести ключ во все клиентские системы. У каждого клиента должен быть свой ключ.

Использование шпатлевки puttygen для генерации ключа. puttygen также предоставит открытый ключ в правильном формате для вставки в клиентскую систему. Лучше всего защитить ключ парольной фразой, если он используется для входа в систему. Pageant или ssh-agent может использоваться для хранения незащищенного ключа в памяти, чтобы не нужно было повторно вводить парольную фразу при каждом подключении.

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

Многие реализации вернулись к использованию authorized_keys как ключевой файл. Этот файл можно использовать для ограничения системы, из которой будет принят ключ, принудительного выполнения команды, ограничения доступа и других вещей. Посмотреть man страницу для более подробной информации.

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

Выглядит хорошо. Многие люди сделали бы это в противоположном направлении (сгенерируйте ключ локально, а затем .pub до сервера), но любой может работать.