SSH (Secure Shell) – это сетевой протокол безопасного доступа. В основном используется при управлении удаленными серверами и оборудованием, использующим ОС Linux для доступа к консоли (терминалу). SSH – это клиент-серверный протокол. При подключении используется 2 приложения: с одной стороны, это сервер, который принимает входящие подключения (по умолчанию на 22 порт) и управляет ими, вторая часть – это клиент, который подключается к серверу. Плюсы SSH в его безопасности, распространенности и доступности.
Существует большое разнообразие клиентов под множество платформ и операционных систем, что позволяет управлять вашим сервером по SSH даже с мобильных устройств при необходимости.
Содержание статьи:
- Подключение по SSH в разных ОС.
- Установка SSH сервера на Ubuntu 20.04 (OpenSSH)
- Настройка SSH сервера в Ubuntu 20.04
- Создание пары ключей
- Настройка Netfilter и Iptables
Подключение по 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