Раздел помощи SpaceWeb

Установка и настройка SSH на сервере с Ubuntu

17 июл, 2024

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

В этой статье мы рассмотрим процесс установки и настройки SSH на сервере с операционной системой Ubuntu. Мы также обсудим основные параметры конфигурации и меры по обеспечению безопасности SSH-соединений.

Подключение по SSH в разных ОС

Как подключиться по SSH на Windows

Если на вашем компьютере установлен Windows, а сервер использует UNIX-подобную систему (например, Ubuntu, Debian, CentOS и т.д.), для установки SSH-соединения можно воспользоваться программой PuTTY. Это бесплатное приложение для Windows, которое не требует установки и представляет собой один исполняемый файл.

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

  1. Загрузите подходящую версию PuTTY с официального сайта.
  2. Запустите файл putty.exe. Откроется основное окно программы.

Важно! Настройки программы по умолчанию обычно менять не нужно. Проверьте, что порт указан как Port 22 и тип соединения – SSH.

  1. В поле «Host Name (or IP address)» введите IP-адрес вашего сервера и нажмите кнопку Open.

Возможно, появится предупреждение безопасности PuTTY, так как вы подключаетесь к новому серверу. Нажмите «Да», чтобы продолжить соединение.

  1. В командной строке введите имя пользователя, под которым вы хотите войти на сервер. При первом подключении или для административного входа используйте логин root.
  2. Затем введите пароль пользователя. Обратите внимание, что при вводе пароля символы не будут отображаться в командной строке. Вы можете ввести пароль вслепую или вставить его с помощью правой кнопки мыши после копирования (Ctrl+C). Видимых изменений не произойдет, но это нормально. 

После ввода пароля нажмите Enter. Если имя пользователя или пароль введены неверно, появится ошибка «Access denied». При успешном подключении откроется командная строка вашего виртуального сервера.

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

Как подключиться по SSH на Linux или macOS

Для подключения по SSH к виртуальному серверу можно использовать терминал, который предустановлен в большинстве операционных систем. В системах на базе Linux, таких как Ubuntu, его можно открыть с помощью комбинаций клавиш Ctrl+Alt+T.

На macOS терминал можно найти с помощью Spotlight, иконка которого расположена в правом верхнем углу экрана.

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

ssh username@ip_address

Где «username» – это ваш логин на сервере, а «ip_address» – IP-адрес сервера. 

Если сервер использует нестандартный порт для SSH, команда будет выглядеть так:

ssh username@ip_address -p <порт>

Где «<порт>» – номер порта, который используется для подключения.

После ввода команды система запросит подтверждение. Введите yes и нажмите Enter. 

Затем она запросит пароль. Пропишите его и нажмите Enter. После этого SSH-соединение будет установлено.

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

OpenSSH (Open Secure Shell) – это набор инструментов для безопасного доступа к удалённым машинам. Он предоставляет возможности для зашифрованной передачи данных, аутентификации пользователей и других функций, которые необходимы для безопасного администрирования серверов и других устройств через сеть. OpenSSH-сервер – это серверная часть этого пакета, которая принимает подключения и обеспечивает безопасный доступ к системе.

В большинстве дистрибутивов OpenSSH-сервер уже предустановлен. Однако если OpenSSH отсутствует в вашей системе, наша инструкция поможет вам решить эту проблему.

  1. Перед началом установки рекомендуется обновить список пакетов. Откройте терминал и выполните команду
sudo apt update

  1. Чтобы установить SSH-сервер, используйте команду:
sudo apt install openssh-server

  1. Если система запросит подтверждение установки, нажмите Y и Enter. 
  2. После установки проверьте статус SSH сервера, чтобы убедиться, что он запущен:
sudo systemctl status ssh

Вы должны увидеть сообщение, что служба SSH активна (active):

ssh.service - OpenBSD Secure Shell server
    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2024-07-21 07:28:10 CEST; 1m ago
...

  1. Чтобы запустить SSH сервер вручную, используйте команду:
sudo systemctl start ssh

  1. Чтобы остановить SSH-сервер, выполните:
sudo systemctl stop ssh

  1. Чтобы настроить автоматический запуск SSH сервера при старте системы, выполните команду:
sudo systemctl enable ssh

Настройка SSH сервера в Ubuntu 

Настройка SSH на Ubuntu необходима для повышения безопасности системы. Например, можно отключить вход под пользователем root или изменить стандартный порт подключения с 22 на произвольный. Рекомендуется использовать порты из верхнего диапазона (50000-65000). 

Настройка выполняется в конфигурационном файле. Перед его модификацией создайте резервную копию:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

Теперь можно вносить изменения. Откройте файл конфигурации SSH для редактирования:

sudo vi /etc/ssh/sshd_config

Как изменить порт SSH

По умолчанию SSH сервер в Ubuntu использует порт 22. Для повышения безопасности вы можете изменить его на любой другой. Рекомендуется использовать порты из верхнего диапазона – от 50000 до 65000. Подбирайте номера с различными цифрами, например, 56713.

Найдите строку Port 22 и раскомментируйте ее, удалив символ #, если он есть. 

В качестве примера, давайте изменим значение на 2222. Однако, учтите, что боты часто сканируют порты с одинаковыми цифрами, поэтому в промышленных средах лучше использовать порт с разными цифрами.

Как отключить доступ для root

Далее отключите возможность входа на сервер под учётной записью суперпользователя (root) и включите возможность входа через ключи. 

Для этого изменим значения параметров:

PermitRootLogin no
PubkeyAuthentication yes

Если вы хотите разрешить аутентификацию для root с использованием ключей, но запретить вход с паролем, измените значение «PermitRootLogin» на prohibit-password:

PermitRootLogin prohibit-password

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

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

sudo systemctl restart ssh

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

ssh -p 2222 username@ip_address

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

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

Открытый ключ (public key) хранится на сервере. Его можно свободно распространять. Он используется для шифрования данных и позволяет серверу идентифицировать подключающегося пользователя.

Закрытый ключ (private key) хранится на клиентском устройстве. Его нельзя передавать третьим лицам. Он используется для расшифровки данных, зашифрованных открытым ключом, и для создания цифровой подписи, подтверждающей подлинность пользователя. Только владелец закрытого ключа может расшифровать данные, которые зашифрованы открытым ключом. Это обеспечивает высокий уровень безопасности.

Зачем нужна пара ключей

Представьте, что Анна и Борис хотят обмениваться секретными сообщениями, и они используют систему с двумя ключами для безопасности. У Анны и Бориса есть по два ключа: открытому и закрытому.

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

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

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

Как сгенерировать пару ключей RSA

Создание ключей в Ubuntu

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

ssh-keygen -t rsa

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

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

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

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

ls -l ~/.ssh/id_*.pub

В терминале отобразится список созданных ключей.

Создание ключей на macOS

Процесс генерации ключей на macOS аналогичен Ubuntu. Используйте ту же команду «ssh-keygen -t rsa» в терминале.

Создание ключей на Windows

Для пользователей Windows проще всего использовать набор утилит PuTTY. В нём есть приложение PuTTYgen, которое позволяет легко создать пару ключей. 

Чтобы создать пару ключей в PuTTYgen:

  1. Запустите утилиту.
  2. Нажмите кнопку Generate и двигайте мышью в окне программы, чтобы сгенерировать ключи.
  3. Затем выберите папку, где вы хотите их сохранить, и добавьте парольную фразу для максимальной защиты.

Как скопировать открытый ключ на сервер

Воспользуйтесь командой ssh-copy-id, которая автоматически добавит ваш открытый ключ в файл ~/.ssh/authorized_keys на сервере. 

Введите:

ssh-copy-id username@server_ip

Замените «username» на ваше имя пользователя на сервере, а «server_ip» на IP-адрес вашего сервера.

Пример:

ssh-copy-id user@192.168.1.1

Система предложит ввести пароль для доступа к серверу:

user@192.168.1.1's password:

Введите пароль и нажмите Enter. Если все пройдет успешно, вы увидите сообщение, что ключ успешно добавлен:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip'"
and check to make sure that only the key(s) you wanted were added.

Как пройти аутентификацию на сервере через созданный ключ

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

ssh username@server_ip

Замените «username» на ваше имя пользователя на сервере, а «server_ip» на IP-адрес вашего сервера.

Пример:

ssh user@192.168.1.1

Если все настроено правильно, вы войдёте на сервер без пароля.

Как отключить аутентификации по паролю

Аутентификация по паролю на SSH сервере в Ubuntu – это неплохая мера безопасности, но длинные и сложные пароли часто хранят в открытом виде. Использование ключей шифрования для аутентификации – это более безопасная альтернатива. В целях повышения безопасности мы рекомендуем отключать аутентификацию по паролю.

Прежде чем продолжить, учтите:

  • в случае блокировки вы не сможете получить доступ к файлам и приложениям на сервере;
  • вас могут заблокировать, если вы потеряете закрытый ключ или повредите файл ~/.ssh/authorized_keys;
  • отключайте аутентификацию по паролю только если вы хорошо знакомы с механизмом ключевой аутентификации и понимаете возможные последствия блокировки.
  • отключение аутентификации по паролю увеличивает риск потери доступа к вашему серверу;

Инструкция по отключению аутентификации по паролю

  1. Подключитесь к вашему серверу с помощью SSH:
ssh username@server_ip

Замените «username» на ваше имя пользователя на сервере, а «server_ip» на IP-адрес вашего сервера.

  1. Откройте файл sshd_config, чтобы отредактировать его:
sudo nano /etc/ssh/sshd_config

  1. Найдите строку PasswordAuthentication и измените её значение с yes на no:
PasswordAuthentication no

  1. После внесения изменений перезапустите службу SSH, чтобы они вступили в силу:
sudo systemctl restart sshd

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

Заключение

Настройка SSH на сервере с Ubuntu – это важный шаг для обеспечения безопасности и удобства удалённого управления. В этой статье мы рассмотрели процесс установки SSH, изменения стандартных настроек для повышения защиты и использования ключевой аутентификации вместо паролей. Следуя этим рекомендациям, вы сможете значительно улучшить безопасность вашего сервера и упростить администрирование.

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