OpenSSH на Windows 11 — не работает в PowerShell
OpenSSH — встроенный SSH клиент в Windows 10/11. Иногда он пропадает из PATH или вовсе не установлен. В этой статье разберём как восстановить работу ssh команды.
Симптом
Открываешь PowerShell и видишь:
PS C:\Users\user> ssh ssh : Имя "ssh" не распознано как имя командлета, функции, файла сценария или выполняемой программы.
При этом в cmd.exe SSH может работать — это нормально, у них разные PATH.
Шаг 1 — Проверить статус OpenSSH
В PowerShell от администратора:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Возможные варианты:
| State | Что означает |
|---|---|
| NotPresent | Не установлен — нужно установить |
| Installed | Установлен, но файл не найден — система повреждена |
Проверить наличие файла:
Test-Path "C:\Windows\System32\OpenSSH\ssh.exe"
Шаг 2 — Установить через PowerShell
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Перезапусти PowerShell и проверь ssh. Если всё равно не работает — переходи к шагу 3.
Шаг 3 — Установить через DISM
Запусти PowerShell от администратора:
DISM /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0
DISM покажет прогресс до 100% и напишет «Операция успешно завершена». После этого закрой и открой PowerShell заново.
Шаг 4 — Если файл всё ещё не появился
Значит система Windows повреждена. Попробуй восстановление:
Start-Service -Name TrustedInstaller sfc /scannow
Или используй Git for Windows как быстрый вариант — он включает ssh в PATH автоматически.
Почему в cmd работает, а в PowerShell нет?
У cmd.exe и PowerShell разные переменные PATH. OpenSSH от Git или старые установки могут попасть в системный PATH (который видит cmd), но не в PATH PowerShell. После установки через DISM оба используют один бинарник из C:\Windows\System32\OpenSSH\.