Как настроить SSH-сервер в Windows 11

ssh сервер windows 11 keytrust24.store

Windows 11 включает встроенный OpenSSH-сервер, дающий возможность удаленно подключаться к компьютеру по протоколу SSH. Это безопасная альтернатива RDP для администрирования через командную строку. SSH-сервер поддерживает аутентификацию по ключам, SFTP для передачи файлов и туннелирование портов.

Главное:

  • OpenSSH-сервер устанавливается как дополнительный компонент Windows
  • Аутентификация по ключам безопаснее пароля и не требует его ввода
  • Конфигурация хранится в файле C:ProgramDatasshsshd_config
  • Брандмауэр автоматически создает правило для порта 22

Установка OpenSSH-сервера

OpenSSH-клиент предустановлен в Windows 11, сервер нужно установить отдельно.

Через параметры: «Параметры» — «Приложения» — «Дополнительные компоненты» — «Добавить компонент» — найдите «OpenSSH Server» — «Установить».

Через PowerShell (от администратора):

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Проверка установки:

Get-WindowsCapability -Online | Where-Object Name -like "OpenSSH*"

Запуск и автозапуск службы:

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

Проверка, что сервер слушает порт 22:

Get-NetTCPConnection -LocalPort 22

Правило брандмауэра создается автоматически. Проверьте:

Get-NetFirewallRule -Name *ssh*

Если правило отсутствует, создайте вручную:

New-NetFirewallRule -Name sshd -DisplayName "OpenSSH Server (sshd)" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Подробнее о настройке брандмауэра.

Настройка sshd_config

Конфигурация OpenSSH-сервера хранится в C:ProgramDatasshsshd_config. Откройте от администратора:

notepad C:ProgramDatasshsshd_config

Основные параметры:

# Порт (по умолчанию 22, рекомендуется сменить для безопасности)
Port 22

# Разрешить аутентификацию по паролю
PasswordAuthentication yes

# Разрешить аутентификацию по ключам
PubkeyAuthentication yes

# Запретить вход root (Administrator)
# DenyUsers Administrator

# Разрешить только определенных пользователей
# AllowUsers user1 user2

# Путь к файлу авторизованных ключей
AuthorizedKeysFile .ssh/authorized_keys

Важный параметр для администраторов Windows: в конце файла найдите и закомментируйте:

# Match Group administrators
#   AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Без этого ключи для администраторов ищутся в другом файле, а не в пользовательском .ssh/authorized_keys.

После изменения конфигурации перезапустите службу:

Restart-Service sshd

Подробнее об основах PowerShell.

Настройка аутентификации по ключам

Аутентификация по ключам безопаснее паролей: нет риска перехвата или подбора пароля.

На клиентском компьютере сгенерируйте пару ключей (если еще нет):

ssh-keygen -t ed25519 -C "mykey"

По умолчанию ключи сохраняются в C:UsersИмяПользователя.ssh. Файл id_ed25519 — приватный ключ (никому не давайте), id_ed25519.pub — публичный ключ.

Скопируйте публичный ключ на сервер. На сервере Windows создайте файл:

C:UsersИмяПользователя.sshauthorized_keys

Вставьте содержимое id_ed25519.pub (одна строка) в этот файл.

Или через PowerShell с клиента (Windows к Windows):

type $env:USERPROFILE.sshid_ed25519.pub | ssh user@server "mkdir -force .ssh; Add-Content .sshauthorized_keys"

Установка правильных разрешений на файл authorized_keys (важно!):

icacls "C:UsersИмяПользователя.sshauthorized_keys" /inheritance:r /grant "ИмяПользователя:F" /grant "SYSTEM:F"

Проверка подключения по ключу:

ssh user@server

Если ключ настроен правильно, пароль запрашиваться не будет.

После настройки ключей отключите парольную аутентификацию в sshd_config:

PasswordAuthentication no

SFTP и передача файлов

OpenSSH-сервер автоматически поддерживает SFTP (SSH File Transfer Protocol) для безопасной передачи файлов.

Подключение через командную строку:

sftp user@server

Основные команды SFTP:

  • ls — список файлов на сервере
  • cd — сменить директорию на сервере
  • lcd — сменить локальную директорию
  • get file.txt — скачать файл
  • put file.txt — загрузить файл
  • mkdir — создать директорию
  • rm — удалить файл
  • exit — выход

Копирование файлов через SCP:

# Скачать файл с сервера
scp user@server:C:Usersuserdocument.txt .

# Загрузить файл на сервер
scp document.txt user@server:C:Usersuser

# Скачать папку рекурсивно
scp -r user@server:C:Projectsmyapp .

Графические SFTP-клиенты: WinSCP, FileZilla (выбрать протокол SFTP), Cyberduck. Подключение: хост = IP-адрес сервера, порт = 22, протокол = SFTP.

Настройка SFTP chroot (ограничение доступа к определенной папке): добавьте в sshd_config:

Match User sftpuser
    ChrootDirectory C:SFTPRoot
    ForceCommand internal-sftp
    AllowTcpForwarding no

Подробнее о настройке в нашем каталоге Windows.

Безопасность и мониторинг SSH-сервера

SSH-сервер на порту 22 подвержен атакам перебора паролей. Примите меры безопасности.

Смена порта: в sshd_config измените Port 22 на другой (например, 2222). Обновите правило брандмауэра:

Set-NetFirewallRule -Name sshd -LocalPort 2222
Restart-Service sshd

Ограничение доступа по IP: в правиле брандмауэра укажите разрешенные адреса:

Set-NetFirewallRule -Name sshd -RemoteAddress 192.168.1.0/24

Мониторинг подключений: логи SSH хранятся в Просмотре событий: «Журналы приложений и служб» — «OpenSSH» — «Operational».

Через PowerShell:

Get-WinEvent -LogName "OpenSSH/Operational" -MaxEvents 20 | Select-Object TimeCreated, Message | Format-Table -Wrap

Текущие SSH-сессии:

Get-Process sshd | Where-Object {$_.SessionId -ne 0}

Блокировка после неудачных попыток: Windows не имеет встроенного fail2ban. Используйте скрипт PowerShell для анализа логов и добавления IP в правила брандмауэра. Или установите sshguard для Windows.

Отключение SSH-сервера (если больше не нужен):

Stop-Service sshd
Set-Service -Name sshd -StartupType Disabled

Подробнее о настройке Defender и настройке брандмауэра. Ключи Windows в нашем каталоге Windows.

Диагностика сетевых проблем

Прежде чем менять настройки, определите, где именно возникает проблема. Системная диагностика занимает 2-3 минуты, но экономит часы проб и ошибок.

Базовые проверки

# Проверка сетевого подключения
ipconfig /all

# Тест связи с DNS-сервером
ping 8.8.8.8

# Тест DNS-разрешения
nslookup google.com

# Трассировка маршрута
tracert google.com

Если ping по IP работает, а nslookup нет — проблема в DNS. Если оба не работают — проблема на уровне сетевого подключения.

Сброс сетевых настроек

Когда диагностика не помогает, полный сброс сетевого стека часто решает проблему:

# Полный сброс сети (от имени администратора)
netsh winsock reset
netsh int ip reset
ipconfig /flushdns
ipconfig /release
ipconfig /renew

После сброса перезагрузите компьютер. Все VPN-подключения и прокси-настройки придется создать заново. Подробнее о настройке DNS читайте в руководстве по DNS.

Безопасность сетевых подключений

Настройка сети без учета безопасности — это открытая дверь для злоумышленников. Минимальные меры защиты обязательны.

Брандмауэр Windows

Не отключайте брандмауэр полностью. Вместо этого создавайте правила для конкретных приложений и портов. Проверьте текущее состояние:

# Статус брандмауэра для всех профилей
netsh advfirewall show allprofiles state

Шифрование трафика

  • Используйте WPA3 или WPA2-Personal для домашней Wi-Fi сети
  • При работе в публичных сетях подключайте VPN
  • Для удаленного доступа используйте SSH или RDP с NLA вместо незащищенных протоколов

Мониторинг подключений

# Все активные сетевые подключения
netstat -an | findstr ESTABLISHED

# С именами процессов (от имени администратора)
netstat -ab

Если видите подключения к незнакомым IP-адресам, проверьте их через whois. Подозрительные соединения могут указывать на вредоносное ПО.

Советы по устранению проблем

Если описанные выше методы не дали результата, попробуйте расширенный набор действий. Каждый шаг проверен на практике и занимает не более 10 минут.

Проверка обновлений Windows

Убедитесь, что установлены все доступные обновления. Многие ошибки исправляются именно через обновления:

# Проверка и установка обновлений через PowerShell
# Установка модуля (один раз)
Install-Module PSWindowsUpdate -Force -Scope CurrentUser
# Проверка доступных обновлений
Get-WindowsUpdate
# Установка всех обновлений
Install-WindowsUpdate -AcceptAll

Чистая загрузка Windows

Сторонние программы и службы могут конфликтовать с системными функциями. Чистая загрузка отключает все лишнее и помогает изолировать проблему:

  1. Нажмите Win + R, введите msconfig
  2. На вкладке Службы поставьте галочку Не отображать службы Microsoft
  3. Нажмите Отключить все
  4. Перейдите на вкладку Автозагрузка > Открыть диспетчер задач
  5. Отключите все элементы автозагрузки
  6. Перезагрузите компьютер

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

Создание нового профиля пользователя

Поврежденный профиль вызывает множество непредсказуемых сбоев. Создайте тестовый аккаунт:

# Создание нового локального администратора
net user TestAdmin Pa$$w0rd /add
net localgroup Administrators TestAdmin /add

Войдите под новым аккаунтом и проверьте, сохраняется ли проблема. Если нет — дело в профиле. Перенесите эти из старого профиля в новый через папку C:Users.

Часто задаваемые вопросы

Чем SSH отличается от RDP?

SSH предоставляет доступ к командной строке (текстовый режим). RDP показывает полный рабочий стол. SSH потребляет минимум трафика, работает через медленные соединения и легко автоматизируется скриптами.

Безопасно ли открывать SSH-порт в интернет?

С аутентификацией по ключам и отключенными паролями — достаточно безопасно. Дополнительно смените порт с 22 на нестандартный и ограничьте доступ по IP через брандмауэр.

Можно ли использовать SSH для туннелирования?

Да. SSH поддерживает проброс портов: ssh -L 8080:localhost:80 user@server создает туннель от локального порта 8080 к порту 80 на сервере.

Как подключиться к SSH-серверу Windows с Linux?

Команда ssh user@windows-ip. Если порт нестандартный: ssh -p 2222 user@windows-ip. Аутентификация по ключу работает аналогично.

Частые вопросы

Чем SSH отличается от RDP?

SSH предоставляет доступ к командной строке (текстовый режим). RDP показывает полный рабочий стол. SSH потребляет минимум трафика, работает через медленные соединения и легко автоматизируется скриптами.

Безопасно ли открывать SSH-порт в интернет?

С аутентификацией по ключам и отключенными паролями - достаточно безопасно. Дополнительно смените порт с 22 на нестандартный и ограничьте доступ по IP через брандмауэр.

Можно ли использовать SSH для туннелирования?

Да. SSH поддерживает проброс портов: ssh -L 8080:localhost:80 user@server создает туннель от локального порта 8080 к порту 80 на сервере.

Как подключиться к SSH-серверу Windows с Linux?

Команда ssh user@windows-ip. Если порт нестандартный: ssh -p 2222 user@windows-ip. Аутентификация по ключу работает аналогично.