Вы находитесь на странице: 1из 9

Настройка SSH авторизации по ключам | 1

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

Если у вас есть желание научиться профессионально строить и поддерживать высокодоступные виртуальные и кластерные среды,
рекомендую познакомиться с онлайн-курсом Администратор Linux. Виртуализация и кластеризация. в OTUS. Курс не для новичков,
для поступления нужно пройти .

Содержание:

1 Введение
2 Создание ssh ключей для putty
3 Настройка ssh на сервере для авторизации по сертификатам
4 Логирование ssh подключений по сертификату

Введение

Пару слов о чем тут пойдет речь. Для подключения по ssh можно использовать связку логин-пароль, а можно логин-сертификат. В интернете всюду
рассказывают о том, что сертификат это безопасно и надо обязательно использовать его для авторизации на сервере. Все, что не по сертификату —
дурной тон и дилетантство. Я совершенно не разделяю это мнение и сам всегда использую связку логин-пароль, более того, я чаще всего захожу сразу под
root. Я искренне не понимаю, зачем заходить под обычным пользователем и каждый раз вводить sudo и пароль. Я захожу на сервер для совершения
административных действий и мне всегда нужны полные права. Что мне там делать под обычным пользователем ума не приложу.

За все время моей работы с серверами у меня никогда не было проблем, связанных с авторизацией по паролю, поэтому я считаю пустой тратой времени
какие-то дополнительные действия в этом плане, если нет особой необходимости. Доводы о том, что пароль могут сбрутить выглядят несостоятельными.

serveradmin.ru Настройка SSH авторизации по ключам | 1


Настройка SSH авторизации по ключам | 2

Пароль должен быть сложным, и брутить его никто не будет. Даже если будут, то есть fail2ban, который быстро отключит желающих побаловаться. Хотя я
сомневаюсь, что сейчас кто-то занимается брутом ssh.

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

Об одном таком нюансе я и расскажу. Мне понадобилось настроить авторизацию ssh по сертификату. Причем авторизовываться будет сразу пользователь
root. Заходить будут как по паролю, так и по сертификату. Мне необходимо вести учет того, кто по какому сертификату подключился по ssh к серверу.

Создание ssh ключей для putty


Для управления серверами я использую windows машину и ssh клиент putty. В составе программного комплекса putty есть утилита для генерации ключей
— puttygen. Скачивайте ее по ссылке с официального сайта — https://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe. После запуска нажимайте на
кнопку Generate и двигайте мышкой, пока не сформируется пара ключей — открытый и закрытый.

serveradmin.ru Настройка SSH авторизации по ключам | 2


Настройка SSH авторизации по ключам | 3

serveradmin.ru Настройка SSH авторизации по ключам | 3


Настройка SSH авторизации по ключам | 4

Key passphrase Можно задать пароль для приватного ключа. Ставить или нет на ваше усмотрение.
Save public key Кнопка сохранения публичного ключа. Он размещается на удаленном сервере.
Save private key Кнопка сохранения приватного ключа. Ключ хранится у клиента и используется для подключения к серверу.

serveradmin.ru Настройка SSH авторизации по ключам | 4


Настройка SSH авторизации по ключам | 5

SSH-2 RSA 2048 Тип ключа и его длинна. Значения по-умолчанию подходят в полной мере для нашей задачи.

Формат ключей, которые создает puttygen не подходит для openssh, который стоит на сервере, поэтому содержимое открытого ключа в нужном формате
копируем из окна puttygen. Я указал этот ключ стрелочкой на скриншоте. Именно это содержание пойдет на сервер. Сохраняйте ключ в формате openssh, а
так же два других с помощью кнопок Save key.

Настройка ssh на сервере для авторизации по сертификатам

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

# mkdir ~/.ssh
# chmod 0700 ~/.ssh
# touch ~/.ssh/authorized_keys
# chmod 0644 ~/.ssh/authorized_keys

В файл authorized_keys вставляйте скопированный ключ из окна puttygen. Сохраняйте и подключайтесь с помощью сертификата. В putty сертификат
нужно указать в разделе Connection -> SSH -> Auth.

serveradmin.ru Настройка SSH авторизации по ключам | 5


Настройка SSH авторизации по ключам | 6

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

Теперь можно подключаться, необходимости перезапускать службу ssh нет.

serveradmin.ru Настройка SSH авторизации по ключам | 6


Настройка SSH авторизации по ключам | 7

Логирование ssh подключений по сертификату


Мне необходимо знать, когда и какой сертификат подключался к серверу. По-умолчанию такой информации чаще всего в логах не остается. Исключение я
заметил только в CentOS 7. Там с дефолтными настройками ssh и уровнем логирования INFO отображается отпечаток ключа в логе:

# cat /var/log/secure

Dec 4 21:32:40 server sshd[21379]: Accepted publickey for root from 10.1.3.221 port 56929 ssh2: RSA
fa:7c:c6:6b:31:98:43:9f:ef:41:c5:49:80:c2:a8:16
Dec 4 21:32:41 server sshd[21379]: pam_unix(sshd:session): session opened for user root by (uid=0)

По отпечатку становится понятно, какой сертификат подключился. Для каждого сертификата отпечаток можно посмотреть в puttygen. В CentOS более
ранних версий, в Ubuntu 12 и 14 в логах будет только такая информация:

# cat /var/log/auth.log

Dec 5 11:44:14 server sshd[9071]: Accepted publickey for root from 10.1.3.221 port 60170 ssh2
Dec 5 11:44:14 server sshd[9071]: pam_unix(sshd:session): session opened for user root by (uid=0)

Информации о самом ключе нет. Я так думаю, это зависит от версии OpenSSH. В первом случае 6-я версия, во втором 5-я. Специально я не проверял. Если у
вас нет информации о ключе в лог файле, исправить это очень просто. В файле /etc/ssh/sshd_config меняем параметр:

LogLevel VERBOSE

serveradmin.ru Настройка SSH авторизации по ключам | 7


Настройка SSH авторизации по ключам | 8

и перезапускаем службу:

# service ssh restart

Пробуем снова подключиться по ssh, используя сертификат, и проверяем лог:

Dec 5 11:43:17 server sshd[8746]: Connection from 10.1.3.221 port 60162


Dec 5 11:43:19 server sshd[8746]: Found matching RSA key: fa:7c:c6:6b:31:98:43:9f:ef:41:c5:49:80:c2:a8:16
Dec 5 11:43:19 server sshd[8746]: Postponed publickey for root from 10.1.3.221 port 60162 ssh2 [preauth]
Dec 5 11:43:19 server sshd[8746]: Found matching RSA key: fa:7c:c6:6b:31:98:43:9f:ef:41:c5:49:80:c2:a8:16
Dec 5 11:43:19 server sshd[8746]: Accepted publickey for root from 10.1.3.221 port 60162 ssh2
Dec 5 11:43:19 server sshd[8746]: pam_unix(sshd:session): session opened for user root by (uid=0)

Теперь в логе будет отображаться отпечаток подключившегося сертификата и мы сможем идентифицировать пользователя.

Онлайн курс по Linux


Если вы хотите стать специалистом по отказоустойчивым виртуальным и кластерным средам, рекомендую познакомиться с онлайн-
курсом Администратор Linux. Виртуализация и кластеризация в OTUS. Курс не для новичков, для поступления нужны хорошие знания
по Linux. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам
этот курс:

Умение строить отказоустойчивые кластера виртуализации для запуска современных сервисов, рассчитанных под высокую
нагрузку.
Будете разбираться в современных технологиях кластеризации, оркестрации и виртуализации.
Научитесь выбирать технологии для построения отказоустойчивых систем под высокую нагрузку.
Практические навыки внедрения виртуализации KVM, oVirt, Xen.
Кластеризация сервисов на базе pacemaker,k8s, nomad и построение дисковых кластеров на базе ceph, glaster, linstore.

serveradmin.ru Настройка SSH авторизации по ключам | 8


Настройка SSH авторизации по ключам | 9

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

serveradmin.ru Настройка SSH авторизации по ключам | 9