Настройка SSH-доступа без запроса пароля к Linux-серверу из Windows CMD

Руководство по настройке входа на Linux-сервер по SSH-ключу, закреплению IP-адреса через DHCP домашнего роутера.

Быстрый старт:

type %USERPROFILE%\.ssh\id_ed25519.pub | ssh USER@SERVER_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

ssh USER@SERVER_IP

Где главное заменить USER — на имя пользователя и SERVER_IP — на имя сервера к которому подключаетесь где-нибудь в блокноте.

Подробная инструкция:

  1. Проверка что есть открытый и закрытый ключ на windows, выполняем комманду и видим id_ed25519 (закрытый, никому не копируем) и id_ed25519.pub (открытый, всегда копируем его)
dir %USERPROFILE%\.ssh

 Содержимое папки C:\Users\Valera\.ssh

17.10.2026  23:16    <DIR>          .
13.10.2026  05:50    <DIR>          ..
17.10.2026  23:18               370 config
17.11.2023  03:39               411 id_ed25519
17.11.2023  03:39               103 id_ed25519.pub
06.04.2024  21:59             3 389 id_rsa
06.04.2024  21:59               749 id_rsa.pub
25.09.2026  01:09             7 205 known_hosts

2. Далее развилка, закрытого и открытого ключа нет (см. выше), выполнить комманду ниже для его генерации и отвечать на вопросы, в основном везде enter, пароль нинада ставить.

ssh-keygen -t ed25519

3. Далее выясняем MAC адрес машины у своего роутера, у меня TP-LINK

Админка роутера — DHCP — Список клиентов DHCP

Копируем нужный MAC и идем в пункт Админка роутера — DHCP — Резервирование адресов — Добавить — вставляем нужный нам MAC адрес и IP адрес подальше от автоматически генеренных.

После нажатия на Сохранить, перезапуск роутера обязателен. Перезапуск сервера не обязателен.

4. Создать SSH-алиас

Открыть файл с SSH-алиасами (потом это очень удобно)

notepad %USERPROFILE%\.ssh\config

И добавить новый алиас, выделенное жирным заменить на свое

Host linux-server
    HostName 192.168.0.200
    User USER
    IdentityFile ~/.ssh/id_ed25519

Затем подключатся очень просто, особенно актуально для всяких cursor, zcode, и любых harness систем.

ssh linux-server

Основные ошибки при настройке

1. REMOTE HOST IDENTIFICATION HAS CHANGED!

SSH обнаружил, что ключ устройства по указанному IP изменился. Это может произойти после переустановки Linux или если роутер выдал тот же IP другому устройству.

Сначала убедитесь, что подключаетесь к нужному серверу потому что скорее всего настраивали для другого сервера, и сотрете подключение. Если изменение ожидаемое, удалите старую запись для конкретного IP:

ssh-keygen -R 192.168.0.101

После этого подключитесь повторно и подтвердите новый ключ, только если уверены, что это нужный сервер.

2. IP-адрес сервера постоянно меняется

Если роутер автоматически раздаёт IP-адреса, один и тот же адрес со временем может достаться разным устройствам. SSH запоминает ключи серверов, поэтому при повторном использовании адреса другим устройством появляется предупреждение о несовпадении ключей.

Решение — настроить резервирование DHCP в роутере: закрепить IP-адрес за MAC-адресом сетевой карты сервера. После обновления DHCP-аренды сервер будет получать зарезервированный адрес, и подключаться к нему станет проще.

3. vdollar_percent_expand: unknown key %U

Эта ошибка возникает, если команда Windows с переменной %USERPROFILE% выполняется внутри Linux. Windows CMD и Linux используют разные обозначения переменных среды.

Выполните exit, чтобы вернуться в Windows, и запускайте команду в CMD. Приглашение C:\Users\...> означает, что вы находитесь в Windows, а user@server:~$ — в Linux.

4. Permission denied (publickey,password)

SSH не смог выполнить вход с доступными способами аутентификации. Возможные причины: публичный ключ не добавлен на сервер, используется не тот приватный ключ или подключение выполняется под другим пользователем.

Проверьте, что публичный ключ находится в ~/.ssh/authorized_keys нужного пользователя Linux, а права доступа установлены корректно: 700 для каталога .ssh и 600 для файла authorized_keys. Приватный ключ храните только на клиентском компьютере.

Итог

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

  1. Создать SSH-ключ на Windows или использовать существующий.
  2. Закрепить IP сервера через DHCP-резервирование роутера.
  3. Добавить публичный ключ в ~/.ssh/authorized_keys на Linux.
  4. Подключаться командой ssh USER@SERVER_IP или через алиас из SSH-конфига.

Такой подход сохраняет стандартную проверку SSH host key, не требует включения ARP Binding и значительно упрощает дальнейшее администрирование сервера из под Windows putty, ssh, etc.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *