Как настроить SSH-сервер на VPS

Для усиления безопасности вашего виртуального сервера мы рекомендуем вам сделать следующие изменения:

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

Внимание!

Перед тем как делать какие-то изменения, связанные с удаленным доступом (в том числе по SSH), убедитесь что у вас есть под рукой реквизиты доступа к вашему виртуальному серверу через панель управления сервером — вы получили их в письме при заказе. В случае проблем с SSH это понадобится для восстановления доступа.

В руководстве для примера используется VPS с ОС Centos 7.8. О том, как выбрать и установить операционную систему на виртуальный сервер, читайте в нашем руководстве «Как произвести первоначальную настройку виртуального сервера: выбор операционной системы».

Мы предполагаем, что вы уже заранее создали обычного пользователя на вашем сервере и разрешили ему временно получать более высокий уровень привилегий с помощью команды sudo. О том, как это сделать, читайте в руководстве «Как создать непривилегированного пользователя на виртуальном сервере».

В качестве терминала мы использовали командную строку Windows. В операционных системах на базе Linux и в macOS SSH-клиент поставляется по умолчанию. В Windows 10 также есть клиент SSH (возможно, понадобится его заранее включить), можно также установить сторонние клиенты, например PuTTY.

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

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

Запустите на вашем ПК терминал (командную строку) и введите команду:

ssh-keygen -f my_keys -b 4096 -C "Atlex VPS keypair"

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

C:\Users\test>ssh-keygen -f my_keys -b 4096 -C "Atlex VPS keypair" Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in my_keys. Your public key has been saved in my_keys.pub.

Посмотреть комментарий и так называемый цифровой отпечаток вашего ключа можно с помощью команды:

  • ssh-keygen -l -f my_keys.pub
  • где my_keys.pub — файл, содержащий открытый ключ.

Перенос открытого ключа на ваш сервер

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

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

ssh-copy-id -i my_keys.pub user@ip.add.re.ss

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

Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user@ip.add.re.ss'" and check to make sure that only the key(s) you wanted were added.

Теперь следует проверить, что вы сможете подключиться с использованием SSH-ключа вместо пароля. Введите команду:

ssh -i my_keys -l user ip.add.re.ss

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

Запрет подключения с правами администратора и с паролем

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

Подключитесь к вашему серверу, снова введя команду из предыдущего шага и парольную фразу:

ssh -i my_keys -l user ip.add.re.ss

На следующем этапе нужно изменить файл конфигурации сервера SSH /etc/ssh/sshd_config. Для этого откройте файл в текстовом редакторе с помощью команды (понадобится ввести пароль пользователя user):

sudo vi /etc/ssh/sshd_config

Найдите строку PermitRootLogin yes и измените yes на no (или можно закомментировать первоначальную строку и добавить новую):

#PermitRootLogin yes PermitRootLogin no

Таким способом вы запретите подключаться по SSH с пользователем root.

Далее нужно запретить подключение с паролем (будут использоваться только SSH-ключи). Для этого найдите строку #PasswordAuthentication yes, раскомментируйте и замените yes на no. Либо можно оставить изначальный вариант закоментированным и добавить новую строку:

#PasswordAuthentication yes PasswordAuthentication no

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

Шпаргалка по работе с файлами в текстовом редакторе vi / vim

  • Esc + : — переход в режим ввода команд
  • / — поиск по документу
  • n — в режиме поиска перейти к следующему результату
  • a — режим редактирования
  • # — закомментировать строку
  • w — сохранить изменения
  • wq — сохранить изменения и выйти
  • q! — выйти без сохранения изменений
  • q — выйти (команда спросит, сохранять ли изменения, если они были сделаны)

Проверьте, что ваш новый config-файл для сервиса SSH составлен корректно, с помощью команды:

sudo sshd -t

Если всё настроено правильно, команда не покажет ошибку. После этого можно перезапустить сервис SSH:

sudo systemctl restart sshd

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

Далее подключитесь, не указывая ключ:

ssh -l user ip.add.re.ss

Вы увидите ошибку:

user@ip.add.re.ss: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Заметьте, что система даже не спрашивает пароль, поскольку этот вид аутентификации запрещен.

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

ssh -i my_keys -l user ip.add.re.ss

Для реализации основных услуг и функций нашего сайта, а также для сбора данных о том, как посетители взаимодействуют с нашими сайтом, продуктами и услугами, мы применяем различные инструменты, включая файлы cookie. Нажимая «Принять», вы соглашаетесь с текущими правилами и условиями использования сайта и даете разрешение на использование этих данных. В противном случае, пожалуйста, покиньте сайт.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: