🐹 CentOS 7: Настройка и использование SSH — Secure Shell.

Содержание:

  1. Разрешение пользователю root заходить по SSH.
  2. Создание пары RSA-ключей.
  3. Копирование открытого ключа на сервер.

3.1. Копирование ключа с помощью ssh-copy-id.
3.2. Копирование открытого ключа по SSH.
3.3. Копирование открытого ключа вручную.

  1. Аутентификация по SSH-ключам.
  2. Отключение парольной аутентификации.
  3. Оригиналы источников информации.

SSH, он же Secure Shell – это зашифрованный протокол, используемый для подключения к серверу и управления ним. При работе с сервером CentOS 7, вы, скорее всего, проведете большую часть времени в сеансе терминала, подключенного к серверу через SSH.

В этом мануале вы узнаете, как настроить ключи SSH на новом сервере CentOS 7.

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

1. Разрешение пользователю root заходить по SSH.

По умолчанию, в некоторых системах Linux для суперпользователя root вход по SSH не работает. При попытке подключиться можно увидеть сообщение «access denied» или «permission denied». Такая настройка необходима для обеспечения большей безопасности системе. Однако, если требуется предоставить возможность подключаться по SSH от пользователя root, необходимо выполнить нижеописанное.

Внимание! В операционной системе CentOS 7 данная опция ВКЛЮЧЕНА уже по умолчанию и настраивать ее не нужно!

Для начала, необходимо создать пароль пользователю root следующей командой:

# passwd root

После нажатия Enter вводим дважды пароль.

Теперь открываем настройки SSH:

# yum -y install mc

# mcedit /etc/ssh/sshd_config

и редактируем параметр PermitRootLogin — задаем значение yes:

...
PermitRootLogin yes
...

Некоторые особенности:

  • если параметр закомментирован, снимаем комментарий;
  • по умолчанию, значение может быть without-password или prohibit-password — оно разрешает вход для root средствами GSSAPI (не парольной аутентификации), например, смарт-карты или отпечатка пальца.

Перезапускаем ssh server:

# systemctl restart ssh || systemctl restart sshd

или

# systemctl restart sshd.service

или в старых версиях без systemd:

# service ssh restart || service sshd restart

Можно подключаться!

2. Создание пары RSA-ключей.

Для начала нужно создать пару ключей на клиентской машине (обычно это ваш компьютер):

# ssh-keygen

По умолчанию ssh-keygen создает пару 2048-битных ключей RSA, это достаточно надежные ключи для большинства случаев (вы можете дополнительно передать флаг -b 4096, чтобы создать длинный 4096-битный ключ).

После ввода команды ssh-keygen вы увидите следующий запрос:

Нажмите Enter, чтобы сохранить пару ключей в подкаталог .ssh/ в домашнем каталоге, или укажите альтернативный путь.

После этого вы увидите:

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

Вы увидите такой вывод:

В результате выполнения команды сгенерировалось 2 файла в каталоге ~/.ssh/.

  • id_rsa.pub — публичный ключ;
  • id_rsa — секретный ключ.

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

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

3. Копирование открытого ключа на сервер.

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

3.1. Копирование ключа с помощью ssh-copy-id.

Инструмент ssh-copy-id включен по умолчанию во многие операционные системы, поэтому вы можете использовать его в своей локальной системе. Чтобы этот метод работал, у вас уже должен быть парольный доступ SSH к серверу.

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

Утилита использует такой синтаксис:

# ssh-copy-id username@remote_host

Вы увидите такой вывод:

Это означает, что ваш локальный компьютер не распознает удаленный хост. Это всегда происходит при первом подключении к новому хосту. Введите yes и нажмите Enter, чтобы продолжить.

Затем утилита сканирует локальную учетную запись, чтобы найти ключ id_rsa.pub.

Когда она найдет ключ, она предложит вам ввести пароль учетной записи удаленного пользователя:

Введите пароль (ваш ввод не будет отображаться из соображений безопасности) и нажмите Enter. Утилита подключится к учетной записи на удаленном хосте, используя предоставленный вами пароль. Затем она скопирует содержимое файла ~/.ssh/id_rsa.pub в файл authorized_keys в домашнем каталоге ~/.ssh удаленной учетной записи.

Вы увидите такой вывод:

На данный момент ваш ключ id_rsa.pub скопирован в удаленную учетную запись. Переходите к разделу 4.

3.2. Копирование открытого ключа по SSH.

Если у вас нет утилиты ssh-copy-id, но есть пароль SSH для доступа к учетной записи на сервере, вы можете загрузить свои ключи с помощью обычного подключения SSH.

Сделать это можно с помощью команды cat, которая прочитает содержимое файла открытого SSH-ключа на локальном компьютере, и конвейера, который передаст ключ через SSH-соединение.

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

Используйте символ перенаправления ‘>>‘, чтобы добавить данные в файл, а не перезаписывать его. Это позволит вам добавлять в файл ключи, не удаляя ранее добавленные ключи.

Команда выглядит так:

# cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Вы можете увидеть такой вывод:

Это означает, что ваш локальный компьютер не распознает удаленный хост. Это происходит при первом подключении к новому хосту. Введите yes и нажмите Enter, чтобы продолжить.

После этого будет предложено ввести пароль учетной записи удаленного пользователя:

username@111.111.11.111’s password:

После ввода пароля содержимое ключа id_rsa.pub будет скопировано в конец файла authorized_keys учетной записи удаленного пользователя. Если все получилось, переходите к разделу 4.

3.3. Копирование открытого ключа вручную.

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

Любым доступным способом подключитесь к удаленному хосту.

Если у вас есть доступ к учетной записи на удаленном сервере, убедитесь, что каталог ~/.ssh существует. При необходимости создайте его.

Переходим в режим пользователя root.

# sudo su

Создаем служебный каталог для ключей.

# mkdir -p /home/user/.ssh/

Вручную нужно вставить содержимое файла id_rsa.pub в файл ~/.ssh/authorized_keys на удаленной машине.

Чтобы отобразить содержимое id_rsa.pub, введите на локальной машине:

# cat ~/.ssh/id_rsa.pub

Вы увидите такой ключ:

ssh-rsa AAAAB3NzaC1h1TmWWv11.......q5O3pISj2ZFl9HgknLL user@test_pc

по смыслу это будет вид

ssh-rsa public_key_string user@test_pc

Теперь вы можете создать или изменить файл authorized_keys в этом каталоге.

# touch /home/user/.ssh/authorized_keys

Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys с помощью этой команды:

# echo public_key_string >> /home/user/.ssh/authorized_keys

Если файла authorized_keys не существует, команда создаст его.

В приведенной выше команде замените public_key_string выводом команды cat ~/.ssh/id_rsa.pub в вашей локальной системе. Он должен начинаться с ssh-rsa AAAA….

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

# chmod 755 /home/user
# chmod 700 /home/user/.ssh
# chmod 600 /home/user/.ssh/authorized_keys
# chown -R user:user /home/user/.ssh/

Выйдем из учетной записи root:

# exit

Теперь можно проверить аутентификацию без пароля на сервере.

4. Аутентификация по SSH-ключам.

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

Введите:

# ssh username@remote_host

Если вы впервые подключаетесь к этому хосту (если вы копировали ключ вручную), вы можете увидеть такое предупреждение:

Это означает, что ваш локальный компьютер не распознает удаленный хост. Введите yes и нажмите Enter.

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

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

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

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

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

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

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

Затем откройте файл конфигурации демона SSH:

# mcedit /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Она может быть закомментирована. Раскомментируйте строку и установите значение no.

Это отключит возможность входа в систему через SSH с использованием паролей учетных записей:

…
PasswordAuthentication no
…

Сохраните и закройте файл. Чтобы обновить настройки, необходимо перезапустить сервис sshd:

# systemctl restart sshd.service

В качестве меры предосторожности откройте новое окно терминала и проверьте работу сервиса SSH:

# ssh username@remote_host

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

Демон SSH теперь поддерживает только аутентификацию по SSH-ключам. Парольная аутентификация успешно отключена.

Заключение:

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

6. Оригиналы источников информации.

  1. 8host.com «Настройка аутентификации на основе SSH-ключей на сервере Linux».
  2. dmosk.ru «Как разрешить пользователю root заходить по SSH в системах Linux».