
Я включил SSH-сервер на Windows с помощью встроенной функции. Поскольку этот сервер используется только как туннель, я хотел бы отключить выполнение любых команд.
На Linux, похоже, можно установить оболочку на /sbin/nologin. Какой эквивалент будет на машине Windows?
решение1
Вы можете указать исполняемый файл оболочки для использования в версии Windows через реестр (документация). Например, вы можете установить PowerShell в качестве оболочки по умолчанию следующим образом:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Однако я не знаю ни о какомнологинАльтернатива shell в Windows. Что касается быстрого и грязного обходного пути, я установил исполняемый файл windows32 (sfc.exe) как "shell", используя метод выше.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\sfc.exe" -PropertyType String -Force
Таким образом, клиенты могут подключаться только с помощью переключателя -N, иначе соединение немедленно закрывается. Обратите внимание, что пользователь ssh не должен быть администратором, поэтому он не может фактически запустить sfc.exe. (Возможно, есть лучший выбор для фиктивной оболочки, чем sfc.exe :P)