Настройте безопасный вход без пароля на удаленный сервер Ubuntu с помощью ключей SSH
SSH - это безопасный сетевой протокол клиент-сервер, который помогает клиентскому компьютеру подключаться и взаимодействовать с удаленным сервером. SSH-соединение гарантирует, что команды, вводимые в терминале, отправляются на удаленный сервер по зашифрованному каналу.
Существует два типа механизмов аутентификации, используемых для подключения к удаленному серверу: аутентификация на основе пароля (подверженная атакам методом грубой силы) и аутентификация на основе ключей SSH (которая очень безопасна).
При аутентификации на основе ключей SSH на клиентском компьютере создается пара ключей, которая называется открытым ключом и закрытым ключом. Копия этого открытого ключа доступна на удаленном сервере. Когда клиент отправляет серверу запрос на подключение, сервер генерирует случайную строку и шифрует ее с помощью открытого ключа. Эту строку можно расшифровать только с помощью закрытого ключа, доступного на клиентском компьютере. Этот метод гарантирует, что к серверу могут получить доступ только клиенты, содержащие закрытый ключ.
В этом руководстве мы увидим, как настроить ключи SSH на сервере Ubuntu 20.04 LTS.
Проверьте, есть ли на вашем компьютере какой-либо существующий ключ SSH
Чтобы проверить, существует ли уже на вашем компьютере пара ключей SSH, введите эту команду в терминале.
ls -l ~ / .ssh / id _ *. pub
Если приведенная выше команда вернет Данный файл или каталог отсутствует
или совпадений не найдено
, то это означает, что пара ключей SSH не существует.
Если у вас есть существующая пара ключей SSH, вы можете использовать одну и ту же пару ключей для доступа к двум удаленным серверам или создать другую пару ключей с другим именем. Давайте перейдем к следующему шагу и посмотрим, как сгенерировать ключи SSH для обоих случаев.
Создание ключей SSH на клиентском компьютере
Чтобы сгенерировать новую пару ключей SSH на вашем компьютере, введите команду, как показано ниже.
ssh-keygen
По умолчанию ключи SSH имеют длину 2048 бит. Для большей безопасности, если вы хотите сгенерировать ключи SSH с более высокими битами, используйте следующую команду.
ssh-keygen -b 4096
Если команда выполняется успешно, на вашем экране появится следующее сообщение.
создание пары публичных / приватных ключей RSA. Введите файл, в котором нужно сохранить ключ (/home/harshit/.ssh/id_rsa):
Теперь, если на вашем компьютере нет существующей пары ключей SSH, просто нажмите Входить
, но если у вас есть существующий ключ SSH, сохраните ключ с другим именем файла, как показано ниже.
Введите файл, в котором нужно сохранить ключ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx
Заменить ххх
в конце имени файла укажите соответствующее имя, как показано ниже, и нажмите Входить
.
Введите файл, в котором нужно сохранить ключ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1
Следующее приглашение попросит вас ввести парольную фразу произвольной длины, это обеспечит двухуровневую безопасность на вашем устройстве.
Введите кодовую фразу (пусто, если кодовая фраза отсутствует): введите ту же парольную фразу еще раз:
Ввод этой парольной фразы гарантирует, что даже если человек получит доступ к вашему закрытому ключу, он не сможет получить доступ к вашему удаленному серверу без этой парольной фразы.
Когда весь процесс будет завершен, на вашем экране появится следующее сообщение.
Ключи SSH были созданы в вашей системе. Пришло время скопировать открытый ключ на удаленный сервер.
Копирование открытого ключа на удаленный сервер Ubuntu
Самый простой и быстрый способ скопировать открытый ключ на удаленный сервер - использовать ssh-copy-id
полезность. Но если эта утилита недоступна на вашем компьютере по какой-либо причине, вы также можете использовать другие методы, представленные в этом разделе.
Использование утилиты ssh-copy-id
В ssh-copy-id
Утилита по умолчанию доступна на вашем компьютере с Ubuntu, которая копирует открытый ключ с вашего устройства в соответствующий каталог на вашем удаленном компьютере с Ubuntu.
Чтобы скопировать общедоступный ключ ssh, просто введите команду в своем терминале, как показано ниже.
ssh-copy-id имя пользователя @ имя хоста
Заменить имя пользователя
и имя хоста
в приведенной выше команде с именем пользователя и именем хоста вашего сервера.
Следующее сообщение появится на вашем терминале, если вы впервые подключаетесь к своему хосту, введите да
и нажмите Входить
.
Подлинность хоста 172.105.XX.XX (172.105.XX.XX) не может быть установлена. Отпечаток ключа ECDSA: xx: xx: xx: xx: 77: fe: 73: xx: xx: 55: 00: ad: d6: xx: xx: xx. Вы уверены, что хотите продолжить подключение (да / нет)? да
Теперь ssh-copy-id
утилита просканирует файл с именем id_rsa.pub
который содержит открытый ключ SSH. После завершения процесса сканирования вам будет предложено ввести пароль вашего удаленного сервера, как показано ниже. Введите пароль и нажмите Входить
.
/ usr / bin / ssh-copy-id: INFO: попытка входа в систему с новым ключом (ключами), чтобы отфильтровать все, что уже установлено / usr / bin / ssh-copy-id: INFO: 1 ключ (ы) ) осталось установить - если вам будет предложено сейчас установить новые ключи [email protected] пароль:
После добавления ключа на вашем терминале появится следующее сообщение.
Количество добавленных ключей: 1 Теперь попробуйте войти в систему с помощью: «ssh '[email protected]'» и убедитесь, что были добавлены только те ключи, которые вам нужны.
Если у вас есть несколько ключей SSH на вашем клиентском компьютере, чтобы скопировать соответствующий открытый ключ на удаленный компьютер, введите команду в шаблоне, показанном ниже.
ssh-copy-id -i id_rsa_xxx.pub имя пользователя @ хост
💡 Совет
Не забудьте указать .pub в конце имени файла при вводе текста в терминале.
Копирование открытого ключа методом трубопровода
Введите следующую команду в терминале, если ssh-copy-id
утилита недоступна. Эта команда может показаться немного длиннее, но работает правильно.
кот ~ / .ssh / id_rsa.pub | ssh имя_пользователя @ ip_адрес_сервера "mkdir -p ~ / .ssh && touch ~ / .ssh / authorized_keys && chmod -R go = ~ / .ssh && cat >> ~ / .ssh / authorized_keys"
Заменять remote_username
и IP-адрес сервера
с вашим именем пользователя и IP-адресом.
Если на вашем компьютере доступно несколько ключей SSH, замените id_rsa.pub
с помощью файла открытого ключа SSH по вашему выбору. Например, id_rsa_client_1.pub
.
При появлении запроса введите пароль удаленного пользователя и нажмите Входить
.
[email protected] пароль:
После ввода пароля id_rsa.pub
файл будет скопирован в авторизованные_ключи
файл удаленного сервера.
Копирование открытого ключа вручную
Используйте этот метод, если у вас нет доступа к удаленной системе через аутентификацию по паролю.
Открыть id_rsa.pub
файл с помощью Кот
команда в терминале. Вы также можете открыть его из текстового редактора, цель - просто скопировать содержимое файла.
кошка ~ / .ssh / id_rsa.pub
Содержимое файла будет выглядеть, как показано ниже.
SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC
Теперь войдите на свой удаленный сервер и вставьте скопированный контент, используя команду, показанную ниже. Заменить верхняя_строка
со скопированным содержимым.
эхо выше_строка >> ~ / .ssh / authorized_keys
Настройка нескольких ключей SSH (необязательно)
Этот шаг предназначен для людей, у которых на клиентском компьютере установлено несколько ключей SSH. Пропустите этот раздел, если у вас настроен только один ключ SSH.
Чтобы управлять несколькими ключами SSH, мы создадим config
файл внутри .ssh
каталог, используя команду, показанную ниже.
cd ~ / .ssh конфигурация vim
Тип я
, чтобы войти в командный режим и ввести сведения о нескольких хостах, как показано в следующем примере:
Host remote-ubuntu-server Имя хоста 172.105.XX.XX Корневой файл пользователя IdentityFile ~ / .ssh / id_rsa_client_1 Host remote-ubuntu-server Имя хоста 172.106.XX.XX Корневой файл пользователя IdentityFile ~ / .ssh / id_rsa_client_2
Аналогичным образом введите сведения о других удаленных серверах и их ключах. После завершения процесса нажмите Esc
и : wq
для сохранения и выхода.
Теперь последующие процессы одинаковы как для одного, так и для нескольких ключей SSH на клиентском компьютере.
Войдите на свой удаленный сервер с помощью ключей SSH
После завершения процесса копирования вашего открытого ключа войдите на удаленный сервер, набрав команду, как показано ниже.
ssh имя_пользователя @ ip_адрес_сервера
Если вы указали парольную фразу при генерации пары ключей, вам будет предложено ввести ее. Новый сеанс откроется после завершения процесса аутентификации.
Вы успешно настроили аутентификацию на основе ключей SSH на удаленном сервере. Но аутентификация на основе пароля все еще активна на вашем сервере, это означает, что ваш удаленный сервер по-прежнему подвержен атакам методом грубой силы.
Итак, теперь мы полностью отключим механизм входа на основе пароля с нашего удаленного сервера.
Отключить механизм входа на основе пароля
Прежде чем вносить какие-либо изменения, убедитесь, что пользователь root или любой пользователь с поддержкой sudo для вашей удаленной учетной записи имеет доступ к вашему серверу с использованием системы аутентификации на основе ключей SSH. Этот шаг полностью заблокирует или отключит вход на основе пароля, поэтому крайне важно, чтобы хотя бы один пользователь с привилегиями root имел доступ к серверу через ключ SSH.
Войдите на свой удаленный сервер Ubuntu и введите команду, показанную ниже.
sudo vim / etc / ssh / sshd_config
- Нажмите
Esc
,/
введите "PasswordAuthentication" и нажмитевходить
. - Теперь нажмите
я
и измените значение «PasswordAuthentication yes» на «PasswordAuthentication no». - Нажмите
Esc
и повторите описанный выше процесс, чтобы найти «ChallengeResponseAuthentication», «UsePAM» и изменить их значения нанет
также.
PasswordAuthentication нет ChallengeResponseAuthentication нет UsePAM нет
Как только все значения будут установлены на нет
, Нажмите Esc
, тип : wq
и ударил входить
.
Чтобы активировать все изменения, перезапустите ssh
service, используя команду ниже.
sudo systemctl перезапустить ssh
Теперь откройте новое окно терминала на своем компьютере и убедитесь, что ваша аутентификация по SSH-ключу работает правильно, прежде чем закрывать текущий сеанс.
После завершения процесса проверки закройте все запущенные сеансы.
Теперь мы успешно настроили аутентификацию на основе ключа SSH на нашем сервере Ubuntu 20.04. Теперь никто не может войти на ваш сервер, используя механизм входа на основе пароля.