Каждый раз, когда пользователь подключается к серверу, он должен вводить пароль для доступа, что может быть неудобно при частых подключениях. Чтобы обеспечить вход без пароля, на удаленном сервере необходимо настроить аутентификацию с помощью SSH -ключей. В этой статье представлен подробный обзор процесса настройки SSH в CentOS для всех, кто планирует его использовать.
SSH — это протокол, который создает зашифрованное соединение между пользовательским компьютером, устройством и сервером. Он позволяет осуществлять удаленный доступ и контроль над компьютером и включен по умолчанию в CentOS 7.
Это безопасный метод передачи почти всех других сетевых протоколов в небезопасной обстановке. Поэтому вы можете работать вдали от компьютера, используя командную оболочку, а также передавать по зашифрованному каналу аудио- или видеопоток, например, с веб-камеры. SSH также может сжимать передаваемые данные и шифровать их после этого.
Многие хостинги предлагают своим клиентам за определенную плату SSH-подключение к домашнему каталогу. Это полезно для тех, кто предпочитает работать в командной строке, или для тех, кому необходимо удаленно запускать приложения, в том числе графические.
Настройка SSH в CentOS может отличаться в зависимости от ваших целей и задач. Однако можно выделить несколько общих моментов, на которые следует обратить внимание каждому пользователю. В том числе нужно ориентироваться на пользовательскую и серверную составляющие.
Рассмотрим основные этапы настройки и наиболее удобные способы.
Обычно SSH присутствует в системных библиотеках. Если же их по каким-то причинам там не оказалось, придётся поставить их самостоятельно.
sudo yum -y install openssh-server openssh-clients
sudo chkconfig sshd on
service sshd start
netstat -tulpn | grep :22
Итак, подготовительные работы выполнены. Можно приступить к основной конфигурации.
Полезная рекомендация – внимательно читайте текст уведомлений в процессе использования команд. Они могут содержать предупреждения об ошибках. Если их игнорировать, есть риск столкнуться с проблемами в будущем.
Рассмотрим процесс на примере редактора nano.
sudo yum install nano
sudo nano /etc/ssh/sshd_config
Вы увидите доступные параметры. Перед некоторыми из них есть символ решётки, это значит, что параметр закомментирован. Если решётку убрать, параметр будет активирован.
Для повышения уровня безопасности, добавьте ещё один протокол – «Protocol 2».
При желании можно изменить другие параметры, но это необязательно. Сохраните изменения, выбрав пункт «Записать» или нажмите на клавиатуре Ctrl + O.
Выйти из редактора тоже можно двумя способами: выбрав «выход» или нажав клавиши Ctrl + X.
sudo service sshd restart
service sshd status
Алгоритм RSA используется в SSH для генерации пары ключей. Аббревиатура образована из имен Rivest, Shamir и Adleman. Этот процесс обеспечивает оптимальную защиту клиентской и серверной частей соединения. Чтобы получить доступ по SSH к серверу, необходимо сгенерировать соответствующий набор ключей SSH, состоящий из открытого и закрытого. То есть обязательно нужно создать пару ключей.
Чтобы это сделать, откройте командную строку на пользовательском компьютере. Введите команду.
ssh-keygen
В следующей строке можно задать путь для сохранения ключа. Если просто нажать Enter без изменений, останутся настройки по умолчанию.
Следующий этап – формирование пароля. В целях безопасности и избежания ошибок его нужно ввести 2 раза.
Ключ готов. Он представлен в виде графического изображения из символов. Например, такое.
Когда настроена аутентификация с помощью ключей SSH, нет необходимости каждый раз вводить пароль. Существует 3 способа копирования.
Это наиболее удобный способ. Но важно убедиться, что утилита уже установлена на компьютере. Введите следующую команду.
ssh-copy-id username@remote_host. В данном случае username@remote_host – это имя пользователя и хост удаленного сервера.
Машина выдаст оповещение и спросит, действительно ли вы собираетесь подключить сервер. Выбираем «yes» и вводим пароль. Всё готово.
Напишите следующую команду. Не забудьте указать своё имя пользователя и хост вместо «username@remote_host».
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Старые ключи останутся в файле, так как опция >> просто дописывают новую информацию без замены существующей. Введите пароль и перезагрузите сервер.
Узнайте ключ с помощью команды.
cat ~/.ssh/id_rsa.pub
Появится длинная комбинация символов, это и есть ключ. Скопируйте его и сохраните в отдельном файле.
Подключитесь к удалённому компьютеру, создайте каталог.
mkdir -p ~/.ssh
Введите ещё одну команду.
echo public_key_string >> ~/.ssh/authorized_keys
Так данные попадут в файл «authorized_keys». Найдите надпись «public_key_string». Вместо неё вставьте ключ, который скопировали ранее.
Готово. Теперь аутентификация к серверу будет происходить, если ввести «ssh username@remote_host».