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

После настройки доступа закройте остальное по чек-листу hardening Linux и добавьте второй фактор: MFA для SSH.
Нужно включить SSH на Linux-сервере, заходить по ключу и закрыть вход паролем и root. Ниже — Debian/Ubuntu и Alma/Rocky/RHEL. Заводские учётки Kali в интернет не выставляйте.
Не ставьте PermitRootLogin yes, чтобы «просто зайти». В man OpenSSH по умолчанию prohibit-password: root паролем не входит. Для сервера безопаснее PermitRootLogin no и отдельный пользователь с sudo.
Что нужно заранее
- Консоль или уже открытая сессия с правами sudo — иначе ошибка в
sshd_configотрежет вас от сервера. - Понимание, какой адрес слушает хост:
ip -4 addr. - Клиент OpenSSH на рабочей станции.
Порт 22 с паролем в интернете перебирают постоянно. Если туда ещё и root — после подбора сразу полная оболочка.
1. Поставить и запустить сервер OpenSSH
Debian / Ubuntu:
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo systemctl status ssh --no-pager
Alma / Rocky / RHEL:
sudo dnf install -y openssh-server
sudo systemctl enable --now sshd
sudo systemctl status sshd --no-pager
Ожидание: служба active (running), в журнале нет ошибки разбора конфига. Пример systemctl status:
● ssh.service - OpenBSD Secure Shell server
Active: active (running) since Sun 2026-10-11 10:01:02 UTC
Прослушиваемый порт:
ss -lntup | grep -E ':22s'
Пример строки: LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3)). Если 22 закрыт файрволом, откройте его только для management-сети. Debian с ufw:
sudo ufw allow from 192.0.2.0/24 to any port 22 proto tcp
sudo ufw status numbered
RHEL с firewalld:
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.0.2.0/24 port port=22 protocol=tcp accept'
sudo firewall-cmd --reload
2. Отдельный пользователь, не root
sudo adduser deploy
sudo usermod -aG sudo deploy
На RHEL-подобных группа обычно wheel, не sudo:
sudo useradd -m -s /bin/bash deploy
sudo usermod -aG wheel deploy
id deploy
Пример id: uid=1001(deploy) gid=1001(deploy) groups=1001(deploy),27(sudo). Без флага -a команда usermod -G сотрёт остальные группы.
Второй человек — тот же ключ не копируйте: заведите alice и свой authorized_keys. В AllowUsers тогда deploy alice.
3. Ключ на рабочей станции
На своей машине, не на сервере:
ssh-keygen -t ed25519 -a 64 -f ~/.ssh/id_ed25519 -C "deploy@workstation"
-t ed25519 — современный тип ключа OpenSSH; -a 64 усиливает защиту ключевого файла парольной фразой. Парольную фразу ключа задайте. Установить открытый ключ:
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@192.0.2.10
Подставьте адрес сервера. Если ssh-copy-id нет, это один раз делается по паролю:
ssh deploy@192.0.2.10 'mkdir -p ~/.ssh && chmod 700 ~/.ssh'
cat ~/.ssh/id_ed25519.pub | ssh deploy@192.0.2.10 'cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
Проверка: ssh -i ~/.ssh/id_ed25519 deploy@192.0.2.10 входит по ключу. Пример удачного входа:
Linux srv-01 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian
deploy@srv-01:~$
Если ключ не принят, ssh спрашивает пароль или пишет Permission denied (publickey). Не закрывайте уже открытую сессию, пока новый вход не подтверждён.
4. Минимальный профиль sshd
Лучше drop-in, чем править весь /etc/ssh/sshd_config — так проще откат.
sudo tee /etc/ssh/sshd_config.d/99-hardening.conf <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
PubkeyAuthentication yes
MaxAuthTries 4
X11Forwarding no
AllowUsers deploy
EOF
Если каталога sshd_config.d нет, добавьте те же строки в /etc/ssh/sshd_config и уберите конфликтующие значения. Смысл директив по sshd_config(5):
PasswordAuthentication no— пароль не принимается. В man значение по умолчанию —yes.KbdInteractiveAuthentication no— закрывает keyboard-interactive. На многих дистрибутивах включёнUsePAM yes: man прямо предупреждает, что PAM может обойтиPermitRootLogin prohibit-password, если keyboard-interactive оставлен.PermitRootLogin no— root не входит ничем. Альтернативаprohibit-password, если root по ключу ещё нужен для узкого сценария (бэкап сforced-commands-only).AllowUsers deploy— остальные локальные учётки по SSH не принимаются. Добавьте своих людей списком, не копируйте пример как единственное имя в проде.
Жёсткий sshd для Linux описан в CIS Benchmarks для вашей ОС. Удалённый доступ в NIST SP 800-53 — контроль AC-17. Это международная практика, не российский закон.
5. Проверка конфига и перечитывание
sudo sshd -t
sudo systemctl reload ssh
На RHEL: sudo systemctl reload sshd. sshd -t должен завершиться без вывода. Если есть синтаксическая ошибка — не reload, исправляйте, консоль оставьте открытой.
6. Как проверить
С другого хоста или из новой сессии, не из той, где вы правили конфиг:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no deploy@192.0.2.10
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@192.0.2.10
ssh -i ~/.ssh/id_ed25519 deploy@192.0.2.10
Первые две должны получить отказ. Пример отказа пароля:
deploy@192.0.2.10: Permission denied (publickey).
Третья — оболочку deploy. Дополнительно:
sudo sshd -T | grep -E 'passwordauthentication|kbdinteractiveauthentication|permitrootlogin|allowusers'
Пример вывода:
passwordauthentication no
kbdinteractiveauthentication no
permitrootlogin no
allowusers deploy alice
Ожидание: пароль и root закрыты, в allowusers только нужные люди.
Откат
Если новый вход не открывается, в живой консоли:
sudo rm /etc/ssh/sshd_config.d/99-hardening.conf
sudo sshd -t
sudo systemctl reload ssh
Не перезагружайте сервер, пока нет второго работающего входа. Не отключайте sshd «для проверки» на машине без KVM/IPMI/консоли провайдера.
Источники
- OpenBSD, sshd_config(5). URL: https://man.openbsd.org/sshd_config.5. Дата обращения: 11.10.2026. Директивы
PasswordAuthentication,PermitRootLogin,UsePAM. - OpenSSH portable, man sshd_config.5. URL: https://github.com/openssh/openssh-portable/blob/master/sshd_config.5. Дата обращения: 11.10.2026.
- man7, sshd_config(5). URL: https://www.man7.org/linux/man-pages/man5/sshd_config.5.html.
- CIS Benchmarks. URL: https://www.cisecurity.org/cis-benchmarks.
- NIST SP 800-53 Rev. 5, AC-17. URL: https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final.






















