Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

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

27001
10 минут чтения
Средний рейтинг статьи: 2.4

Secure Shell (SSH) — это сетевой протокол, который используется для безопасного соединения между клиентом и сервером. Каждое взаимодействие шифруется. Это позволяет безопасно управлять хостом, передавать файлы и решать другие задачи.

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

Для успешной настройки вам необходимо:

  1. Разместить компоненты SSH-сервера на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
  2. Иметь клиентский компонент SSH на компьютере, с которого вы хотите подключиться к удаленному хосту. Для этого обычно используют пакет openssh-client, который предустановлен в большинстве дистрибутивов Linux и BSD. На Windows для решения подобных задач требуется установка дополнительных утилит. Одно из самых популярных решений — PuTTY.

Включение SSH

По умолчанию удаленный доступ через защищенный сетевой протокол запрещен. Однако установка SSH в Ubuntu выполняется очень просто.

Запустите консоль сервера, на котором требуется настройка SSH в Ubuntu. 

Обновите пакетный менеджер. 

    

Установите необходимое ПО:

    

Обратите внимание — для выполнения обеих операций требуются права суперпользователя, которые вы получаете с помощью sudo.

OpenSSH в Ubuntu запускается автоматически после установки. Но вы можете проверить его статус, используя команду:

    

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

    

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

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

    

Ubuntu поставляется с инструментом настройки брандмауэра под названием UFW. Если в вашей системе включен брандмауэр, обязательно откройте порт SSH:

    

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

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

Чтобы сделать соединение еще более безопасным, а аутентификацию — удобной, используют пару ключей: открытый и закрытый. Открытый хранится на хосте, закрытый — на компьютере пользователя.

Посмотрим, как создавать ключи в разных ОС. Начнем с Ubuntu.

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

    

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

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

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

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

    

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

Аналогичным образом можно сгенерировать пару на macOS

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

Добавление ключа на сервер

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

Если у вас есть доступ к хосту по паролю, можно перенести открытый ключ с помощью ssh-copy-id. Пример команды:

    

Вместо timeweb введите свое имя пользователя, вместо 192.168.18.76 — IP-адрес сервера. В ответ появится запрос пароля. Введите его, после чего открытая часть отправится на хост.

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

    

Вместо timeweb введите свое имя пользователя, вместо 192.168.18.76 — IP-адрес сервера. Если вы не установили парольную фразу, вы можете войти в систему без дополнительной аутентификации. Система защиты проверит открытую и закрытую части ключа и при совпадении установит соединение.

VDS и VPS

Гибкие виртуальные серверы с почасовым
биллингом по всему миру: Россия, Азия и Европа.

Изменение конфигурации

Настройка Ubuntu Server выполняется через файл /etc/ssh/sshd_config. Но прежде чем вносить в него изменения, сделайте резервную копию. Это убережет вас от потери времени на переустановку, если вдруг совершите ошибку.

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

    

В /etc/ssh/sshd_config.factory-defaults сохранятся стандартные параметры. Вы же будете редактировать файл /etc/ssh/sshd_config.

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

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

Прежде чем продолжить, имейте в виду следующее:

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

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

Чтобы отключить аутентификацию по паролю, подключитесь к серверу с правами root и отредактируйте файл sshd_config. Откройте его и измените параметр PasswordAuthentication. Вместо Yes установите значение No

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

    

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

Отключение доступа для root

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

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

Откройте конфигурационный файл для редактирования:

    

Измените значение PermitRootLogin на No.

Существует также возможность разрешить аутентификацию пользователя root с помощью любого другого разрешенного механизма, кроме пароля. Для этого установите параметру PermitRootLogin значение prohibit-password.

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

Чтобы применить обновленную конфигурацию, перезапустите службу:

    

Изменение стандартного порта

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

Откройте файл конфигурации:

    

Раскомментируйте строку Port 22. Вместо 22 укажите другой номер — например, Port 56713. Сохраните изменения и закройте файл.

Чтобы применить конфигурацию, перезапустите службу:

    

После успешного перезапуска убедитесь, что теперь подключение проходит по другому порту:

    

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

Настройка туннелирования

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

Есть три типа туннелирования (переадресации):

  • локальное,
  • удаленное,
  • динамическое.

Для настройки некоторых типов придется редактировать файл конфигурации SSH.

Локальная переадресация

Это переадресация порта с клиентского компьютера на удаленный. Затем соединение перенаправляется на другой порт целевого компьютера.

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

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

Для локальной переадресации используется аргумент -L. Пример команды:

    

Теперь откройте браузер на локальном компьютере. Вы можете использовать localhost:8080 для доступа к удаленному приложению вместо доступа к нему с использованием адреса server.example:3000.

Удаленная переадресация

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

Откройте файл конфигурации:

    

Установите для параметра GatewayPorts значение Yes.

Сохраните изменения и перезапустите службу:

    

Для настройки переадресации используйте аргумент -R. Пример команды:

    

После выполнения этой команды хост будет прослушивать порт 8080 и перенаправлять весь трафик на порт 3000, который открыт на локальном компьютере.

Удаленное перенаправление в основном используется для предоставления доступа кому-то извне ко внутренней службе.

Динамическая переадресация

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

Динамическое туннелирование создает сокет на локальном компьютере. Он работает как прокси-сервер SOCKS. Вы также можете сказать, что ваш локальный компьютер используется в качестве прокси-сервера SOCKS и по умолчанию прослушивает порт 1080. Когда хост подключается к этому порту, он перенаправляется на удаленную машину, затем — на динамическую машину через динамический порт.

Для настройки динамического туннелирования используется аргумент SSH -D. Пример команды:

    

Как только туннелирование установлено, вы можете настроить свое приложение для его использования — например, добавить прокси в браузер. Переадресация должна быть настроена отдельно для каждого приложения, для которого вы хотите туннелировать трафик.

Отключение SSH

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

    

Запустить службу заново можно командой:

    

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

Подготовили для вас выгодные тарифы на VDS/VPS

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Заключение

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

Подключение по SSH в Ubuntu — распространенная задача, так что эти знания точно вам пригодятся. Если не в разработке и администрировании, то в личных целях. Например, для установки безопасного соединения между разными устройствами в локальной сети.

27001
10 минут чтения
Средний рейтинг статьи: 2.4

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server