В этой статье мы подробно разберём, как установить и настроить SSH на сервере с Ubuntu. Вы узнаете, как установить OpenSSH, проверить корректность работы сервиса, найти IP-адрес сервера, повысить безопасность подключения с помощью смены порта и ключевой аутентификации, а также как управлять доступом и защититься от атак. Всё изложено простыми словами, без сложных терминов — чтобы даже новичок понял и смог повторить.
1. Установка и базовая настройка SSH на Ubuntu
Как установить и запустить OpenSSH сервер на Ubuntu?
SSH (Secure Shell) — это протокол, который обеспечивает защищённое подключение к серверу по сети. В Ubuntu чаще всего используется его реализация — OpenSSH.
Чтобы установить OpenSSH сервер, откройте терминал и выполните команду:
sudo apt update
sudo apt install openssh-server
Если сервер уже установлен, система сообщит об этом, иначе начнётся установка.
Как проверить, что SSH-сервис работает корректно после установки?
После установки нужно убедиться, что сервис запущен и работает. Для этого выполните:
sudo systemctl status ssh
Если увидите строку с active (running)
, значит сервер SSH успешно запущен.
Как найти IP-адрес или доменное имя сервера для подключения по SSH?
Чтобы подключиться к серверу, нужен его IP-адрес или доменное имя.
Узнать локальный IP можно командой:
ip a
В выводе найдите адрес в формате xxx.xxx.xxx.xxx
у активного сетевого интерфейса (обычно eth0
или ens33
).
Если сервер в облаке или у провайдера, IP обычно указывается в панели управления.
Как настроить автоматический запуск SSH-сервиса при загрузке системы?
OpenSSH сервер обычно добавляется в автозагрузку автоматически. Чтобы убедиться, выполните:
sudo systemctl enable ssh
Это гарантирует, что SSH-сервис стартует при каждой загрузке Ubuntu.
2. Настройка безопасности SSH
Как изменить стандартный порт SSH на Ubuntu и какие меры предосторожности при этом соблюдать?
По умолчанию SSH слушает порт 22, который часто сканируют злоумышленники. Чтобы повысить безопасность, рекомендуется изменить порт на нестандартный — например, в диапазоне 49152–65535.
Для этого отредактируйте файл конфигурации:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # создаём резервную копию
sudo nano /etc/ssh/sshd_config
Найдите строку:
#Port 22
Раскомментируйте её и замените 22 на, например, 49532:
Port 49532
Сохраните файл и перезапустите SSH сервис:
sudo systemctl restart ssh
Важно: После смены порта не забудьте разрешить новый порт в брандмауэре (UFW или iptables), иначе потеряете доступ!
Как отключить вход по паролю и включить аутентификацию по SSH-ключам?
Аутентификация по ключам — более безопасный способ, чем по паролю.
В файле /etc/ssh/sshd_config
найдите и измените параметры:
PasswordAuthentication no
PubkeyAuthentication yes
Это отключит вход по паролю и разрешит только по ключам.
Как запретить вход в систему по SSH под пользователем root?
Для повышения безопасности запрещаем вход под root.
В том же конфигурационном файле найдите строку:
PermitRootLogin yes
Измените на:
PermitRootLogin no
Какие дополнительные параметры конфигурационного файла SSH помогут повысить безопасность сервера?
Рассмотрим полезные параметры:
Параметр | Описание | Рекомендуемое значение |
---|---|---|
AllowUsers |
Список пользователей, которым разрешён доступ по SSH | Указать конкретных пользователей, например user1 user2 |
AllowGroups |
Список групп с правом доступа | Указать нужные группы |
MaxAuthTries |
Максимальное число попыток аутентификации | 3 |
LoginGraceTime |
Время ожидания для входа (секунды) | 30 |
ClientAliveInterval |
Время бездействия клиента, после которого он отключается (сек) | 300 |
PermitEmptyPasswords |
Запрет пустых паролей | no |
UseDNS |
Проверка соответствия DNS имени клиента | no |
Настройка этих параметров существенно затруднит несанкционированный доступ.
3. Работа с SSH-ключами и аутентификацией
Как сгенерировать SSH-ключи и скопировать публичный ключ на удалённый сервер?
На вашем локальном компьютере выполните:
ssh-keygen
Система предложит путь для сохранения ключа — обычно это ~/.ssh/id_rsa
. Можно нажать Enter, чтобы принять по умолчанию. Для дополнительной защиты можно установить пароль на ключ.
Чтобы скопировать публичный ключ на сервер:
ssh-copy-id -p НОВЫЙ_ПОРТ пользователь@IP_адрес_сервера
Где -p
— порт SSH, если он изменён.
Если ssh-copy-id
недоступен, можно вручную скопировать содержимое ~/.ssh/id_rsa.pub
в файл ~/.ssh/authorized_keys
на сервере.
Как проверить успешное подключение по SSH с использованием ключей?
Подключитесь к серверу:
ssh -p НОВЫЙ_ПОРТ пользователь@IP_адрес_сервера
Если соединение происходит без запроса пароля (или с запросом пароля ключа, если он установлен), значит аутентификация по ключу работает.
Какие шаги нужно предпринять для автоматического подключения по SSH без пароля?
Если ключи настроены, а пароль на ключ не установлен — подключение будет автоматическим.
Для удобства можно добавить параметры в файл ~/.ssh/config
на клиенте:
Host myserver
HostName IP_адрес_сервера
User пользователь
Port НОВЫЙ_ПОРТ
IdentityFile ~/.ssh/id_rsa
Тогда команда ssh myserver
будет подключаться автоматически.
4. Управление доступом и защита от атак
Как ограничить доступ по SSH для определённых пользователей или групп?
В файле /etc/ssh/sshd_config
добавьте:
AllowUsers user1 user2
AllowGroups sshusers
Только указанные пользователи и группы смогут подключаться.
Как настроить ограничения по времени и количеству попыток входа в SSH?
В конфигурационном файле задайте:
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 300
Это ограничит число попыток, время ожидания и отключит бездействующих пользователей.
Как интегрировать fail2ban для защиты SSH от брутфорс-атак?
Fail2ban — это сервис, который анализирует логи и блокирует IP, с которых идут подозрительные попытки входа.
Установите fail2ban:
sudo apt install fail2ban
По умолчанию он уже содержит конфигурацию для SSH. После установки запустите и включите автозапуск:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
Настройки можно изменить в файле /etc/fail2ban/jail.local
.
Как настроить брандмауэр UFW или iptables для разрешения SSH-подключений на нестандартном порту?
Если вы сменили порт SSH, например на 49532, настройте брандмауэр:
Для UFW:
sudo ufw allow 49532/tcp
sudo ufw enable
sudo ufw status
Для iptables:
sudo iptables -A INPUT -p tcp --dport 49532 -j ACCEPT
Не забудьте сохранить правила iptables, чтобы они применялись после перезагрузки.
5. Резервное копирование и восстановление конфигурации
Как сделать резервную копию конфигурационного файла SSH перед внесением изменений?
Перед редактированием файла /etc/ssh/sshd_config
создайте копию:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Если что-то пойдёт не так, можно вернуть исходные настройки:
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
Как правильно перезапустить SSH-сервис после изменения настроек?
После любых изменений в конфигурационном файле выполните:
sudo systemctl restart ssh
Или
sudo service ssh restart
Это применит новые параметры. Помните, что если вы меняли порт или другие критичные настройки, подключение по SSH может временно прерваться.
Итог
Настройка SSH на Ubuntu — это несложный, но очень важный процесс для безопасного удалённого управления сервером. Установите OpenSSH, убедитесь, что сервис работает, смените стандартный порт, настройте аутентификацию по ключам и запретите вход для root. Используйте fail2ban и брандмауэр для защиты от атак, а также всегда делайте резервные копии конфигурационных файлов перед изменениями. Следуя этим рекомендациям, вы обеспечите надёжное и удобное подключение к вашему Ubuntu серверу.
Если у вас остались вопросы — смело задавайте! А пока — удачного подключения и безопасного администрирования вашего сервера!