Я пытаюсь изучить это, а не просто следовать руководствам, поэтому я могу рекомендовать правильные действия, когда люди спрашивают (а они это делают). Вот что я получил.
Сначала сгенерируйте оба ключа с помощью такой команды:
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
до сервера), но любой может работать.