Top.Mail.Ru
поддержка 24/7
поддержка 24/7

Подключение к SSH на Ubuntu

SSH (Secure Shell) – это сетевой протокол безопасного доступа. В основном используется при управлении удаленными серверами и оборудованием, использующим ОС Linux для доступа к консоли (терминалу). SSH – это клиент-серверный протокол. При подключении используется 2 приложения: с одной стороны, это сервер, который принимает входящие подключения (по умолчанию на 22 порт) и управляет ими, вторая часть – это клиент, который подключается к серверу. Плюсы SSH в его безопасности, распространенности и доступности.

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


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

В Linux SSH клиент предустановлен почти во всех сборках по умолчанию.

Самые популярные SSH-клиенты в MacOS:

  • Terminal (стандартный терминал)

  • iTerm2

Под Windows также существует множество приложений-клиентов:

  • PuTTY

  • Xshell

  • OpenSSH

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

Аутентификация (авторизация) на SSH сервере может происходить двумя способами:

  • С помощью пароля

  • С помощью пары SSH ключей – открытый (public key) и закрытый (private key). 

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

Публичный ключ – хранится на сервере в открытом виде.

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

Преимущества ключей:

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

На самом сервере не хранится никакой приватной информации, такой как – hash пароля.

Установка SSH сервера на Ubuntu 20.04 (OpenSSH)

Для установки OpenSSH на вашем сервере должен быть настроен доступ в интернет.

Откройте терминал и введите команду:

sudo apt install openssh-server
  
Установка OpenSSH в терминале Ubuntu

Согласитесь с установкой пакетов, нажав Д или Y.

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

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

sudo systemctl list-unit-files | grep enabled | grep ssh

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

sudo systemctl enable ssh


Для проверки работы ssh сервера вы можете подключиться к локальному серверу, введя команду:

ssh localhost


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

По умолчанию все файлы конфигурации находятся в директории /etc/ssh



Наиболее важные файлы конфигурации это:

  • Ssh_config – файл настройки клиента, определяет правила, которые применяются при подключении к удаленному хосту

  • Sshd_config – файл настройки сервера, определяет правила подключения к серверу

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

Примечание: перед изменением настроек рекомендуем сохранить исходный файл конфигурации.

sudo vi /etc/ssh/sshd_config

Изменить порт подключения:


Перед параметром Port уберите знак # (раскомментируйте) и укажите номер того порта, на который вы хотите изменить.

Отключение входа в систему для пользователя с правами root:

По умолчанию в последних дистрибутивах Ubuntu установлен параметр prohibit-password (запретить-пароль), который позволяет использование только SSH ключей для подключения с правами root

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

PermitRootLogin no
 

Для аутентификации по ключу включите параметр

PubkeyAuthentication yes
 

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

sudo systemctl restart ssh

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

На локальном компьютере c MacOS/Linux введите команду в терминале для генерации ключа:

ssh-keygen

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

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

cat ~/.ssh/id_rsa.pub

Для загрузки ключа на сервер введите команду:


 ssh-copy-id имя_пользователя@ip_удаленного_сервера -p2221(порт)

Примите подключение к серверу и введите пароль для доступа к удаленному серверу.

Для отключения снова перейдите в файл конфигурации ssh сервера:

sudo vi /etc/ssh/sshd_config

И укажите параметр:

PasswordAuthentication no

После чего перезапустите службу SSH.

Теперь вы можете подключаться к серверу с помощью пары ключей.

Настройка Netfilter и Iptables:

Для настройки установите набор утилит для управления Netfilter и Iptables (если он не установлен, зачастую он включен в дистрибутив ubuntu):

sudo apt install iptables


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

sudo iptables -P INPUT DROP 

Для разрешения входящих подключений по ssh c любых ip к серверу добавьте правила (в примере используется порт 2221):

sudo iptables -A INPUT -p tcp --dport 2221 -m state --state NEW -j ACCEPT  
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Для разрешения подключения с определенных ip или подсетей  используйте правила:

sudo iptables -A INPUT -p tcp -s ваша_сеть_или_ip --dport 2221 -m state --state NEW -j ACCEPT 


Загрузка ...