На всех серверах Безлимитный трафик, защита от DDoS и IPMI включены. Без платы за подключение и контракта. Безлимитный трафик на всех серверах Смотреть цены

Документация

Подключение к серверу по SSH

Настройте SSH-ключи в Linux, macOS или Windows, сохраните хосты в ~/.ssh/config, отключите вход по паролю без риска потерять доступ и восстановите его через KVM.

  • 5 мин чтения
  • Обновлено
  • Инженерная команда FlexDedi

Об этой странице

Область применения
Все выделенные серверы FlexDedi
Обновлено
2 ноября 2026 г.
Нужна помощь?
Открыть тикет, 24/7
На этой странице

SSH-ключи безопаснее паролей и удобнее в работе. В этом руководстве вы создадите ключи на рабочем компьютере, скопируете их на сервер FlexDedi, а затем отключите вход по паролю так, чтобы не потерять доступ.

Понадобятся IPv4-адрес сервера и пароль root — оба указаны на странице сервера в панели управления. В примерах используется адрес 203.0.113.10; замените его своим.

Перед началом работы

OpenSSH предустановлен в Linux, macOS, Windows 10 и 11, а также в Windows Server 2019 и более поздних версиях. В Windows это можно проверить командой ssh -V в PowerShell. Если команда не найдена, установите клиент из PowerShell с правами администратора:

powershell
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

1. Создайте пару ключей

В терминале Linux или macOS и в Windows PowerShell команда одинаковая:

bash
ssh-keygen -t ed25519 -C "alice@laptop"

Оставьте расположение по умолчанию и задайте парольную фразу. Закрытый ключ (id_ed25519) остаётся на вашем компьютере: в ~/.ssh в Linux и macOS или в C:\Users\alice\.ssh в Windows. На серверы попадает только открытый ключ (id_ed25519.pub).

2. Скопируйте открытый ключ на сервер

В Linux и macOS утилита ssh-copy-id в последний раз запросит пароль root и добавит ключ с правильными правами доступа:

bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@203.0.113.10

В Windows нет ssh-copy-id, поэтому передайте ключ по SSH через конвейер:

powershell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@203.0.113.10 "umask 077; mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Затем убедитесь, что ключ работает. Командная оболочка должна открыться без запроса пароля:

bash
ssh -i ~/.ssh/id_ed25519 root@203.0.113.10

3. Добавьте ключ в агент

Агент хранит разблокированный ключ, поэтому парольную фразу достаточно вводить один раз за сеанс. В Linux выполните ssh-add ~/.ssh/id_ed25519. В macOS команда ssh-add --apple-use-keychain ~/.ssh/id_ed25519 вдобавок сохранит парольную фразу в связке ключей.

В Windows один раз включите службу агента из PowerShell с правами администратора, затем добавьте ключ:

powershell
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

4. Сохраните сервер в ~/.ssh/config

Запись хоста заменяет длинные команды коротким именем. Добавьте в ~/.ssh/config (в Windows — C:\Users\alice\.ssh\config, синтаксис тот же):

text
Host fd-db1
    HostName 203.0.113.10
    User root
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
    ServerAliveInterval 30

Теперь для подключения достаточно ssh fd-db1, а имя работает также с scp и rsync, например: rsync -a ./site/ fd-db1:/srv/site/. Параметр IdentitiesOnly yes не даёт клиенту предлагать серверу все ключи из агента подряд — иначе дело может закончиться ошибкой «Too many authentication failures».

5. Безопасно отключите вход по паролю

Вход по паролю притягивает попытки перебора. Отключите его, как только заработает вход по ключу, — в таком порядке.

Шаг 1. Не закрывайте текущий SSH-сеанс и проверьте вход по ключу из второго терминала.

Шаг 2. Создайте дополнительный файл конфигурации (drop-in), который разрешает вход только по ключам:

bash
cat > /etc/ssh/sshd_config.d/00-keys-only.conf <<'EOF'
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
EOF

Префикс 00- важен. В Ubuntu, Debian, AlmaLinux и Rocky Linux строка Include для этого каталога находится в начале /etc/ssh/sshd_config, а sshd использует первое прочитанное значение каждого параметра. Поэтому приоритет у файлов, прочитанных раньше, — в том числе над 50-cloud-init.conf, который разрешает вход по паролю.

Шаг 3. Проверьте конфигурацию и выведите параметры, которые sshd будет использовать на самом деле:

bash
sshd -t && sshd -T | grep -Ei '^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)'

Ожидаемый результат: no, no и without-password — это прежнее название prohibit-password.

Шаг 4. Перезапустите службу. Открытые сеансы не прервутся:

bash
# Ubuntu and Debian
systemctl restart ssh

# AlmaLinux and Rocky Linux
systemctl restart sshd

Шаг 5. С рабочего компьютера убедитесь, что пароли теперь отклоняются:

bash
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password root@203.0.113.10

Ожидаемый ответ — Permission denied (publickey). Надёжный пароль root всё равно оставьте: он по-прежнему действует в консоли KVM, которая работает в обход SSH, и это ваш путь обратно на сервер.

6. Восстановите доступ через консоль KVM

Потерянный ключ, правило файрвола, блокирующее порт 22, бан от fail2ban или испорченный файл конфигурации sshd — всё это может лишить вас доступа. Консоль KVM даёт прямой доступ к экрану и клавиатуре сервера, без сети и SSH.

  1. В панели управления откройте сервер и запустите консоль KVM.
  2. Войдите как root со своим паролем.
  3. Найдите причину:
bash
sshd -t                                   # syntax errors in the configuration
journalctl -u ssh -n 50 --no-pager        # use -u sshd on AlmaLinux and Rocky Linux
chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys
ufw status verbose                        # or: nft list ruleset
fail2ban-client set sshd unbanip 198.51.100.7   # your workstation's IP, if banned

Чтобы установить новый ключ, проще всего указать PasswordAuthentication yes в вашем drop-in-файле, перезапустить SSH, выполнить ssh-copy-id с рабочего компьютера, а затем вернуть значение no.

Если пароль root вы тоже не помните, загрузите систему восстановления и добавьте ключ или сбросьте пароль оттуда, как описано в разделе Переустановка ОС и режим восстановления. Подробнее о самой консоли — в разделе Работа с IPMI и консолью HTML5 KVM.

Предупреждение о ключе хоста после переустановки

При переустановке генерируются новые ключи хоста, поэтому клиент предупредит, что идентификация удалённого хоста изменилась. Если вы только что переустановили систему, удалите старую запись и подключитесь снова:

bash
ssh-keygen -R 203.0.113.10

Если вы ничего не переустанавливали, не обходите предупреждение. Сначала проверьте отпечаток через консоль KVM, как показано в разделе Начало работы.