Как создать SSH-ключ и передать его на сервер: Linux и Windows

VPS и серверы Опубликовано: · 7 мин чтения

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

Как это работает

SSH-ключ — это пара файлов. Приватный ключ (id_ed25519) остаётся на вашем компьютере и никому не передаётся. Публичный ключ (id_ed25519.pub) копируется на сервер в файл authorized_keys. При подключении сервер проверяет, что у вас есть приватный ключ от этой пары, — пароль по сети не передаётся вообще.

Один ключ можно положить на любое количество серверов. Если ноутбук украли или сотрудник уволился, достаточно удалить его публичный ключ из authorized_keys — менять пароли на всех серверах не нужно.

Шаг 1. Создайте ключ на Linux или macOS

Откройте терминал и выполните:

ssh-keygen -t ed25519 -C "ivan@company.uz"

На вопрос о пути нажмите Enter — ключ сохранится в ~/.ssh/id_ed25519. Затем задайте парольную фразу: если приватный ключ украдут, без неё им нельзя будет воспользоваться. Пустую фразу оставляйте только для ключей, которыми пользуются скрипты и бэкапы.

Если сервер старый и не понимает ed25519 (CentOS 6 и раньше), создайте RSA-ключ: ssh-keygen -t rsa -b 4096.

Шаг 1. Создайте ключ на Windows 10 и 11

В Windows 10 (1809 и новее) и Windows 11 клиент OpenSSH уже встроен. Откройте PowerShell — администратором быть не нужно — и выполните ту же команду:

ssh-keygen -t ed25519 -C "ivan@company.uz"

Ключи появятся в папке C:\Users\ВАШЕ_ИМЯ\.ssh\. Если команда не найдена, включите компонент: «Параметры → Приложения → Дополнительные компоненты → Клиент OpenSSH».

PuTTY. Если вы подключаетесь через PuTTY, создайте ключ в PuTTYgen: тип EdDSA (Ed25519) → Generate → задайте Key passphrase → Save private key (файл .ppk). Публичный ключ скопируйте из верхнего поля «Public key for pasting into OpenSSH authorized_keys file» — он нужен на следующем шаге.

Шаг 2. Передайте ключ на сервер Linux

С Linux и macOS — одной командой. Она спросит пароль сервера в последний раз и сама положит ключ куда нужно:

ssh-copy-id root@ВАШ_IP

Если SSH на нестандартном порту: ssh-copy-id -p 2222 root@ВАШ_IP.

С Windows команды ssh-copy-id нет, поэтому в PowerShell используйте такую:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@ВАШ_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Вручную (например, из ключа PuTTYgen или через консоль в личном кабинете): зайдите на сервер, откройте файл nano ~/.ssh/authorized_keys и вставьте публичный ключ одной строкой. Права должны быть такими: папка ~/.ssh — 700, файл — 600, иначе сервер проигнорирует ключ.

Проверьте: ssh root@ВАШ_IP должен пустить без пароля сервера (спросит только парольную фразу ключа, если вы её задали).

Шаг 2. Передайте ключ на Windows Server

На Windows Server 2019, 2022 и 2025 сначала включите сервер OpenSSH — в PowerShell от администратора:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

Куда класть ключ, зависит от пользователя:

  • Обычный пользователь — в файл C:\Users\ИМЯ\.ssh\authorized_keys.
  • Пользователь из группы «Администраторы» — в общий файл C:\ProgramData\ssh\administrators_authorized_keys. Файл в папке пользователя для администраторов не читается — это самая частая причина, почему «ключ не работает».

Для администратора выполните на сервере (вставьте свой публичный ключ в кавычки):

Add-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value "ssh-ed25519 AAAA... ivan@company.uz"
icacls.exe C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

Вторая команда оставляет доступ к файлу только администраторам и системе — с другими правами sshd ключ не примет. На русской версии Windows группа называется «Администраторы».

Шаг 3. Отключите вход по паролю

Только после того, как убедились, что вход по ключу работает, — иначе закроете доступ себе. На Linux откройте /etc/ssh/sshd_config и поставьте:

PasswordAuthentication no
PermitRootLogin prohibit-password

В Ubuntu 22.04 и 24.04 проверьте ещё папку /etc/ssh/sshd_config.d/ — файл 50-cloud-init.conf может снова включать пароли. Затем перезапустите службу и, не закрывая текущее окно, проверьте вход в новом:

sudo sshd -t && sudo systemctl restart ssh

На Windows Server то же самое в файле C:\ProgramData\ssh\sshd_config: PasswordAuthentication no, затем Restart-Service sshd.

Ключ с одного сервера на другой

Для бэкапов через rsync, деплоя или репликации базы один сервер должен заходить на другой без пароля. Создайте ключ на сервере A и передайте его на сервер B:

ssh-keygen -t ed25519 -f ~/.ssh/backup_key -N "" -C "backup@server-a"
ssh-copy-id -i ~/.ssh/backup_key.pub user@SERVER_B
ssh -i ~/.ssh/backup_key user@SERVER_B "hostname"

Для таких ключей заведите на сервере B отдельного пользователя с минимальными правами — не root. Свой личный приватный ключ на серверы не копируйте: если нужно перейти с сервера на сервер, используйте ssh -A или ssh -J (jump-хост).

Удобство: файл ~/.ssh/config

Чтобы не набирать IP, порт и путь к ключу каждый раз, опишите серверы в ~/.ssh/config (на Windows — C:\Users\ИМЯ\.ssh\config):

Host prod
    HostName 185.0.0.10
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Теперь достаточно ssh prod, а scp и rsync понимают это имя так же.

Если не пускает

  • Запустите ssh -v root@ВАШ_IP — в выводе видно, какой ключ предлагается и что ответил сервер.
  • Linux: права ~/.ssh — 700, authorized_keys — 600, владелец — сам пользователь. Ошибки сервера — в journalctl -u ssh.
  • Windows Server: администратор → ключ в administrators_authorized_keys, права через icacls. Журнал — «Просмотр событий → Журналы приложений и служб → OpenSSH».
  • Ключ в authorized_keys должен быть одной строкой: при копировании из PuTTYgen или мессенджера часто появляются переносы.

На VPS MyCloud у вас всегда есть запасной вход — консоль сервера в личном кабинете mcvps.uz: если ошиблись в настройках SSH, через неё можно всё исправить. Сервер с Ubuntu, Debian или Windows Server создаётся на странице VPS серверов.

Нужна помощь с задачей из статьи?

Подберём конфигурацию, посчитаем стоимость и поможем с переносом.

Не знаете, что выбрать? Подскажем и подберём конфигурацию

Напишите, что нужно — сервер для 1С, камеры для ПВЗ или переезд с другого хостинга. Подберём решение, назовём точную цену и поможем с переносом: проконсультируем и подскажем порядок действий.