Настройка SSH авторизации по ключам
В интернете полно инструкций о том, как настроить ssh авторизацию по ключам. Каждый раз, когда мне надо это сделать, я иду в поиск и делаю, так как забываю нюансы. В этот раз решил записать для себя и для всех остальных краткую инструкцию и небольшое дополнение от себя, которое нигде не встретил, по поводу логирования отпечатков ключей.
Введение
За все время моей работы с серверами у меня никогда не было проблем, связанных с авторизацией по паролю, поэтому я считаю пустой тратой времени какие-то дополнительные действия в этом плане, если нет особой необходимости. Доводы о том, что пароль могут сбрутить выглядят несостоятельными. Пароль должен быть сложным, и брутить его никто не будет. Даже если будут, то есть fail2ban, который быстро отключит желающих побаловаться. Хотя я сомневаюсь, что сейчас кто-то занимается брутом ssh.
Об одном таком нюансе я и расскажу. Мне понадобилось настроить авторизацию ssh по сертификату. Причем авторизовываться будет сразу пользователь root. Заходить будут как по паролю, так и по сертификату. Мне необходимо вести учет того, кто по какому сертификату подключился по ssh к серверу.
Создание ssh ключей для putty
Key passphrase | Можно задать пароль для приватного ключа. Ставить или нет на ваше усмотрение. |
Save public key | Кнопка сохранения публичного ключа. Он размещается на удаленном сервере. |
Save private key | Кнопка сохранения приватного ключа. Ключ хранится у клиента и используется для подключения к серверу. |
SSH-2 RSA 2048 | Тип ключа и его длинна. Значения по-умолчанию подходят в полной мере для нашей задачи. |
Формат ключей, которые создает puttygen не подходит для openssh, который стоит на сервере, поэтому содержимое открытого ключа в нужном формате копируем из окна puttygen. Я указал этот ключ стрелочкой на скриншоте. Именно это содержание пойдет на сервер. Сохраняйте ключ в формате openssh, а так же два других с помощью кнопок Save key.
Настройка ssh на сервере для авторизации по сертификатам
Здесь все просто. Во всех известных мне дистрибутивах авторизация по сертификатам уже настроена, нужно просто добавить этот сертификат на сервер. Сделаем это.
Выбрать нужно приватный ключ, у которого расширение .ppk. Напоминаю, что на сервер мы отправили публичный ключ. Этот ключ можно использовать на множестве серверов, так что нет необходимости для каждого сервера генерировать новую пару ключей. Везде можно использовать один и тот же.
Теперь можно подключаться, необходимости перезапускать службу ssh нет.
Логирование ssh подключений по сертификату
Мне необходимо знать, когда и какой сертификат подключался к серверу. По-умолчанию такой информации чаще всего в логах не остается. Исключение я заметил только в CentOS 7. Там с дефолтными настройками ssh и уровнем логирования INFO отображается отпечаток ключа в логе:
По отпечатку становится понятно, какой сертификат подключился. Для каждого сертификата отпечаток можно посмотреть в puttygen. В CentOS более ранних версий, в Ubuntu 12 и 14 в логах будет только такая информация:
Информации о самом ключе нет. Я так думаю, это зависит от версии OpenSSH. В первом случае 6-я версия, во втором 5-я. Специально я не проверял. Если у вас нет информации о ключе в лог файле, исправить это очень просто. В файле /etc/ssh/sshd_config меняем параметр:
и перезапускаем службу:
Пробуем снова подключиться по ssh, используя сертификат, и проверяем лог:
Теперь в логе будет отображаться отпечаток подключившегося сертификата и мы сможем идентифицировать пользователя.
Источник
Подключение с использованием ключей SSH
С использованием ключей SSH связано множество интересных особенностей. Ниже мы расскажем о том, как правильно их применять и настраивать.
Как разобраться в использовании ключей SSH
Использование ключей SSH более безопасно, чем использование традиционного доступа с помощью логина и пароля. Обычный пароль можно подобрать с помощью атаки грубой силы, а ключи SSH подобрать практически невозможно.
Создание пары ключей даёт вам две длинные строки символов: открытого и закрытого ключа. Вы можете разместить открытый ключ на сервере, а потом подключиться к нему и залогиниться в систему с помощью закрытого ключа. Таким образом, закрытый ключ подходит к открытому ключу, и вам не нужно вводить пароль для доступа к системе. Также вы можете повысить безопасность закрытого ключа, добавив использование ключевой фразы.
Шаг 1 — создание пары RSA ключей
Cоздаем пару ключей на клиентской машине. Желательно, чтобы это был ваш компьютер:
Шаг 2 — размещение ключей и ключевая фраза
Когда вы введете команду для генерации пары ключей, система задаст вам несколько вопросов. Здесь необходимо ввести имя файла куда сохранить ключи:
Подумайте, хотите ли вы использовать ключевую фразу. Её использование даёт преимущество — безопасность ключа независимо от метода шифрования, потому что ключевую фразу знаете только вы.
Также, ключевая фраза защитит ваш закрытый ключ, если он попадёт не авторизированному пользователю. Он не сможет получить доступ к системе, пока не введёт правильную ключевую фразу, как результат — для взлома системы понадобится намного больше времени.
Недостаток использования ключевой фразы — это её ввод каждый раз при входе в систему.
Процесс генерации ключа выглядит так:
Теперь публичный ключ хранится в /home/demo/.ssh/id_rsa.pub. Закрытый ключ хранится в /home/demo/.ssh/id_rsa.
Шаг три — копирование ключа
Когда ключи сгенерированы, время разместить публичный ключ на сервере, где мы хотим его использовать. Вы можете скопировать публичный ключ на новый компьютер, используя команду ssh-copy-id. Измените имя пользователя и пароль на ваш:
Альтернативный способ размещения публичного ключа:
Не имеет значения, каким образом вы размещаете публичный ключ на сервере, вы должны увидеть что-то подобное:
Таким образом, теперь вы можете залогиниться используя команду ssh [email protected] и у вас система не будет запрашивать пароль, однако если вы установили ключевую фразу, то нужно будет ее ввести (также ее необходимо будет вводить каждый раз при входе в систему).
Шаг 4 — Отключение доступа по паролю для пользователя root
Когда вы уже скопировали ваши ключи на сервер и убедились, что вы можете залогиниться в систему используя ключи, то вы можете пойти дальше и отключить доступ по паролю для пользователя root.
Для того чтобы сделать это, откройте файл конфигурации SSH сервера:
Найдите в этом файле строчку PermitRootLogin и справьте к следующему виду, чтобы пользователь root мог логиниться по ключу:
Сохраните изменения и перезапустите службу SSH для того чтобы изменения вступили в силу:
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Источник
SSH авторизация по ключу через PuTTY
На сегодняшний день набирает обороты практика аутентификации к SSH-серверу по ключу, в этом есть несколько преимуществ:
В это статье мы настроим SSH авторизации на сервере CentOS 7 по ключу, и настроем подключение через ключ утилиту PuTTY.
Генерация ключа
Если вы хотите обезопасить себя по максимальному вы можете задать пароль для защиты приватного ключа в полях Key Passphrase и Confirm Passphrase. Но при каждом входе у вас будет запрашивать пароль который вы ввели. Это обезопасит вас если ваш приватный ключ будет похищен.
Далее сохраняем public key и private key. Приватный ключ мы будем использовать для подключения к серверу, а вот публичный ключ надо будет передать на удаленный сервер которому мы будем подключаться.
Обратите внимания на то как был сгенерирован ваш публичный ключ.
Лично у меня он был сгенерирован не совсем верно, вот пример public_key в дальнейшем при подключении через PuTTY с таким ключом могут возникнуть ошибка Server refused our key.
Для того чтобы избежать подобной ошибки правим файл с публичным ключом, пример правильного ключа.
Установка публичного ключа на сервере
Далее необходимо скопировать наш публичный ключ на сервер. Мы воспользуемся для передачи на сервер ключа утилитой PSFTP, но вам ничего не мешает его передать через любой FTP клиент.
Ключ с копировался, теперь нужно добавить его в
/.ssh/authorized_keys. Далее логинемся еще раз по паролю, через PuTTY и выполняем:
Далее нужно проверить настройки нашего SSH сервера, сами настройки лежат в файле /etc/ssh/sshd_config:
Теперь нам надо будет перезапустить SSH сервер:
Теперь мы можем подключиться к серверу по ключу или паролю.
Но мы можем вообще запретить подключатся к SSH серверу по паролю указав в файле /etc/ssh/sshd_config.
После чего не забываем заново перезапустить SSH сервер.
Настройка и подключения PuTTY
Теперь все что нам осталась это создать новый сеанс и настроить его подключения к SSH серверу по ключу.
Создаем новый сеанс пиши на IP Адрес к серверу.
Далее, мы выбираем меню категорию SSH и там выберем под категорию Auth
В поле Private key file for authentication загружаем наш приватный ключ.
Далее переходим обратно в раздел Session и сохраняем нашу сессию для того чтобы следующий раз не заполнять все эти поля.
Остаётся только проверить правильность аутентификации к SSH серверу по ключу. Запустите PuTTY и подключитесь к своему серверу. Если вы при создании, ключа заполнили поле Key Passphrase и Confirm Passphrase то вас запросит вести этот пароль. Если же всё настроено неправильно, то будет выдано сообщение об ошибке и предложено ввести пароль.
Источник