Как настроить аутентификацию по ключу SSH в Linux

Secure Shell является наиболее широко используемым средством входа на удаленный сервер Linux (или компьютер). Используя этот инструмент, вы получаете доступ к командной строке на удаленном компьютере через безопасный туннель. Из коробки вам будет предложено ввести пароль удаленного пользователя. Хотя это все еще более безопасно, чем использование более старых методов (таких как telnet), его можно сделать еще более безопасным с помощью SSH Key Authentication.

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

Понимание аутентификации ключей на самом деле довольно просто. Представьте, что у вас есть замок, и единственный способ открыть его — использовать определенный ключ, который, как вам известно, принадлежит вам. Как замок узнает, что ключ принадлежит вам? Потому что ключ содержит уникальную для вас подпись. Внутри замка есть соответствующая подпись, которую ключ использует для сравнения. Если подписи совпадают, они откроются. Если ключ подходит, но подписи не совпадают, замок не открывается.

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

Давайте заставим это работать.

Генерация пары ключей SSH

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


  1. Откройте окно терминала на рабочем столе.

    Снимок экрана команды ssh-keygen.

    Выполните команду:

    SSH-серийник

    Снимок экрана с именованием ключа ssh и созданием ключевой фразы.

    Дайте ключу имя и местоположение (перейдите по умолчанию, используя Enter / Return на твоей клавиатуре).


  2. Введите и подтвердите ключевую фразу для ключа (убедитесь, что она является надежной и уникальной)


Теперь у вас есть пара ключей SSH. Эти два файла будут найдены в ~ / .Ssh и будет назван:

  • id_rsa — закрытый ключ
  • id_rsa.pub — открытый ключ.

Скопируйте ваш открытый ключ на удаленный компьютер

Снимок экрана: копирование ключа SSH на удаленный компьютер.

Затем вы должны скопировать файл открытого ключа на удаленный компьютер, на который хотите войти. Это можно сделать с помощью команды:

ssh-copy-id USER @ REMOTE_IP

Где USER — это имя пользователя на удаленном компьютере, а REMOTE_IP — это IP-адрес удаленного компьютера.

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

Тестирование соединения

Снимок экрана входа на удаленную машину с использованием SSH Key Authentication.

Проверьте соединение, введя команду:

ssh USER @ REMOTE_IP

Где USER — это имя пользователя на удаленном компьютере, а REMOTE_IP — это IP-адрес удаленного компьютера. Вместо запроса пароля пользователя вам будет предложено ввести ключевую фразу пары ключей SSH. После того, как вы ввели правильную ключевую фразу, вам будет разрешен доступ к удаленному компьютеру. Поздравляем, SSH Key Authentication запущена и работает.

Отключение аутентификации по паролю

Вы можете сделать этот шаг дальше, отключив аутентификацию по паролю. С этой конфигурацией единственный способ получить доступ к удаленному компьютеру — с компьютера, содержащего закрытый ключ из соответствующей пары. Другими словами, нет пары ключей, нет доступа.

Чтобы отключить аутентификацию по паролю, войдите на удаленный компьютер и введите команду:

sudo nano / etc / ssh / sshd_config

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

#PasswordAuthentication yes

Измените эту строку на:

ПарольАутентификация нет

Сохраните и закройте файл. Перезапустите SSH с помощью команды:

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

Снимок экрана: запрещенная попытка доступа к удаленной машине.

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

Поздравляем, вы успешно сделали вход в удаленную систему Linux более безопасным с помощью SSH.

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