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