Нажмите "Enter" для перехода к содержанию

Настройка подключения к серверу по ssh-ключам.

Последнее обновление на 06.01.2024

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

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

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

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

Содержание:

  1. Что такое SSH?
  2. Установка сервера SSH
  3. SSH-ключи. Как создать ssh-ключ? Генерация ssh-ключей
  4. Добавляем ssh-ключи на сервер
  5. Файл authorized_keys
  6. Подключение к серверу. Авторизация по ssh-ключам
  7. Настройка конфигурации ssh на сервере. Настройка авторизации только по ssh-ключам
  8. Резюме

Что такое SSH?

SSH, или Secure Shell, — это сетевой протокол, обеспечивающий безопасный способ доступа и управления удаленными устройствами и серверами. Он был разработан для замены менее безопасных протоколов, таких как Telnet и FTP, поскольку предлагает функции шифрования и аутентификации, обеспечивающие конфиденциальность и целостность данных. SSH был создан Тату Йлененом в 1995 году как ответ на проблемы безопасности Telnet и FTP. Он быстро завоевал популярность и оброс различными версиями, наиболее распространенной из которых сегодня является SSH-2. Этот протокол стал отраслевым стандартом для безопасного удаленного доступа.

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

Установка сервера SSH.

Если вы подключаетесь к серверу, на которой установлена десктопная версия операционной системы, то для корректной работы необходимо сначала установить ssh-сервер

Для Debian/Ubuntu:

sudo apt update
sudo apt install openssh-server

Для Centos/Fedora/RHEL

sudo yum install openssh-client

Если вы подключаетесь к серверу, установленному на каком-то хостинге с серверной ОС, то сервер ssh там скорее всего уже установлен.

SSH-ключи. Как создать ssh-ключ? Генерация ssh-ключей.

Первое что нам нужно сделать, это создать пару ssh-ключей. Для этого нам нужно открыть терминал(в Windows можно использовать Power Shhell) и ввести в него команду:

ssh-keygen

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

Вам будет предложен адрес для ключей, по умолчанию это /home/user/.ssh/id_rsa (где user — имя вашего пользователя), нажмите Enter, либо введите другую папку. Далее будет вопрос про пароль. Его придется вводить каждый раз при подключении, если не хотите этого делать, то можно создать ключ без пароля просто нажав Enter и пропустив этот шаг. После этого вы увидите вывод о том что ключ создан и в указанной вами папке (по умолчанию это ~/.ssh) будет создано два файла: id_rsa — приватный ключ и id_rsa.pub — публичный ключ. Приватный ключ нужно хранить в тайне, публичный передается на сервер.

Добавляем ssh-ключи на сервер.

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

При создании сервера в дашборде хостинга вы добавляете содержимое ключа через специальный раздел создания ssh-ключей.
Для получения содержимого публичного ключа воспользуйтесь комнадой cat ~/путь до папки с файлом/id_rsa.pub:

cat ~/.ssh/id_rsa.pub

Либо можно копировать его на уже созданный сервер с помощью команды

ssh-copy-id user@server

где user — это имя пользователя, а server — ip-адрес или домен сервера

Или, если ключи лежат не в стандартной папке:

ssh-copy-id -i ~/<путь до папки с ключом>/id_rsa.pub user@server

В этой команде user — имя пользователя, server — ip-адрес или домен сервера.

При добавлении ключа сервер запросит пароль пользователя. Введите его и нажмите Enter.

Файл authorized_keys.

Есть третий способ как добавить ключ на сервер — это создание файла authorized_keys в папке .ssh. Можно воспользоваться для этого консольным текстовым редактором nano:

sudo nano /home/user/.ssh/authorized_keys 

Добавьте в этот файл содержимое публичного ключа, сохраните и выйдите из редактора nano. Для каждого пользователя должен быть свой файл authorized_keys в папке .ssh, иначе при попытке зайти на сервер под другим пользователем вход по ключам будет недоступен. Желательно создавать этот файл из под пользователя в домашней папке которого он находится, либо же дать пользователю права на этот файл, иначе вход по ssh-ключам не сработает.

Подключение к серверу. Авторизация по ssh-ключам.

Для подключения к серверу по стандартному порту и когда ключи находятся в стандартной папке используется команда

ssh user@server

Где user — имя пользователя, server — ip-адрес или домен сервера

Если порт отличается от стандартного, то используется команда

ssh user@server -p <номер порта>

Если расположение ключей отличается от стандартного:

ssh user@server -i ~/<путь до папки с ключом>/id_rsa

Если вы поменяли вообще все, то можно совместить эти две команды:

ssh user@server ~/<путь до папки с ключом>/id_rsa -p <номер порта>

Настройка конфигурации ssh на сервере. Настройка авторизации только по ssh-ключам.

Файл конфигурации находится по адресу /etc/ssh/ssh_config, откройте его любым редактором, например nano:

nano /etc/ssh/sshd_config

Нам нужно поправить несколько строк.

Запрещаем логинится на сервер по паролю, ищем строчку Найдите строку, содержащую директиву PasswordAuthentication. По умолчанию значение установлено в yes, что позволяет аутентификацию по паролю. Измените значение PasswordAuthentication на no.

Запрещаем руту логинится на сервер. Запрет аутентификации пользователя root по SSH повышает безопасность сервера, поскольку пользователь root обладает полными правами и в случае дискредитации этого пользователя можно полностью потерять доступ к серверу. Вместо этого, рекомендуется использовать аутентификацию под обычным пользователем и потом получать привилегии с помощью команды sudo. Находим строчку PermitRootLogin yes и меняем на no. Разумеется к этому моменту уже должен быть создан другой пользователь с привилегиями sudo.

Меняем стандартный порт для подключения по SSH. Замена стандартного порта SSH может повысить безопасность вашего сервера, так как многие автоматические атаки направлены именно на стандартный порт 22. При использовании нестандартного порта, атакующим сложнее обнаружить SSH-сервер на вашем сервере. Ищем в файле конфигурации строчку Port 22. Меняем 22 на любой свободный порт: Port 1789. Главное не забудьте этот порт потом. (Например 1789 — это год взятия Бастилии, легко запомнить).
После того как вы внесли изменения, сохраните файл конфигурации. И обновите сервис ssh:

sudo service ssh restart

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

Резюме.

Аутентификация по ssh-ключам — очень полезная практика для обеспечения безопасности серверов под управлением операционной системы Linux. Вам однозначно стоит освоить такой полезный метод.

Добавить комментарий