Как использовать SSH Key Authentication

Если вы администратор Linux, то вы очень хорошо знакомы с командой ssh. Почему? Потому что это самый популярный способ получения доступа к удаленному серверу Linux. Защищенная оболочка (SSH) часто считается достаточно безопасной. Если вы серьезно относитесь к своей безопасности, вы знаете, что это будет небольшим преувеличением. Да, SSH намного лучше, чем использование большинства других средств удаленного входа на сервер Linux. При разумном использовании его можно сделать еще более безопасным. Как? С аутентификацией ключа SSH.

Что такое аутентификация по ключу SSH?

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

ssh olivia @ 192.168.1.221

Вам будет предложено ввести пароль пользователя для olivia. Это наиболее часто используемый метод для входа в SSH. Однако использование пароля ограничено длиной пароля, которую вы можете запомнить или которую хотите ввести. Конечно, вы могли бы попросить пользователя olivia установить невероятно длинный и сложный пароль, но собирается ли этот пользователь вводить этот пароль каждый раз, когда ему нужно войти? Возможно нет. При аутентификации по SSH-ключу используется зашифрованная фраза-пароль, которая намного длиннее, чем при использовании стандартного пароля. Таким образом, криптографическая стойкость, обнаруженная в SSH Key Authentication, выходит далеко за рамки того, что может соответствовать стандартный пароль.

Но чтобы использовать SSH Key Authentication, вы должны настроить его. К счастью, это невероятно легко сделать.

Генерация вашего SSH-ключа

Снимок экрана создания ключа SSH в Linux.

Первое, что вы должны сделать, это сгенерировать ключ SSH. Это довольно просто. Откройте окно терминала на клиентском компьютере, который вы планируете использовать для входа на сервер, и введите команду:

SSH-серийник

Вам будет предложено ввести имя файла для вашего нового сгенерированного ключа. Чтобы принять значение по умолчанию (/home/USER/.ssh/id_rsa — где USER — ваше имя пользователя), просто нажмите клавишу Enter. Затем вам будет предложено ввести и подтвердить пароль. Сделайте этот пароль сильным.

Когда команда завершится, ваш ключ готов к использованию.

Копирование вашего ключа на сервер

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

ssh-copy-id USER @ SERVER_IP

Где USER — имя пользователя, а SERVER_IP — IP-адрес сервера, на который вы хотите войти. Вам будет предложено ввести пароль пользователя. После успешной аутентификации ключ SSH будет скопирован, и вы сможете войти на сервер обычным способом. Выполните команду (с клиента, который вы использовали для создания ключа SSH):

ssh USER @ SERVER_IP

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

Блокировка вниз

Снимок экрана файла sshd_config, найденного в Linux.

На этом этапе пользователи могут войти на ваш сервер с помощью стандартных паролей SSH или аутентификации по ключу SSH. Чтобы сделать эту настройку еще более безопасной, вы можете запретить использование аутентификации по паролю, изменив конфигурацию демона SSH. Для этого выполните команду:

sudo nano / etc / ssh / sshd_config

В этом файле найдите строку:

#PasswordAuthentication yes

Раскомментируйте его (удалите символ #) и измените да на нет.

Далее ищите строку:

#PubkeyAuthentication yes

Раскомментируйте эту строку.

Сохраните и закройте файл (нажмите Ctrl + x) и ответьте «да». Перезапустите демон SSH с помощью команды:

sudo systemctl перезапустить sshd

Теперь, если вы попытаетесь выполнить SSH на этот сервер с любого клиента, который не содержит соответствующий ключ SSH, вам будет отказано в доступе.

Где хранится ключ SSH

Снимок экрана файла author_keys, найденного в Linux.

Для тех, кому интересно, войдите на сервер, на который вы скопировали свои ключи. Выполните команду:

меньше ~ / .ssh / authorized_keys

В результате выполнения вышеприведенной команды будут отображены все ключи, отправленные вами от клиентов (с помощью команды ssh-copy-id). Если вы обнаружите, что хотите отменить аутентификацию по ключу SSH у определенного клиента, вы можете удалить строки, соответствующие имени хоста клиента (имя хоста — это последний бит информации в ключе).

Ссылка на основную публикацию