
Habilitei o servidor SSH no Windows usando o recurso integrado. Como este servidor está sendo usado apenas como túnel, gostaria de desabilitar a execução de qualquer comando.
No Linux, parece ser possível definir o shell como/sbin/nologin. Qual seria o equivalente em uma máquina Windows?
Responder1
Você pode especificar o executável do shell para usar na versão do Windows via registro (documentação). Por exemplo, você pode definir o PowerShell como shell padrão da seguinte maneira:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Contudo não tenho conhecimento de nenhumnologinalternativa de shell no Windows. Quanto a uma solução rápida e suja, configurei um executável windows32 (sfc.exe) como "shell" usando o método acima.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\sfc.exe" -PropertyType String -Force
Dessa forma, os clientes podem se conectar apenas com a opção -N, caso contrário a conexão será fechada imediatamente. Observe que o usuário ssh não deve ser um administrador, portanto, ele não pode executar o sfc.exe. (Talvez haja uma escolha melhor para o shell fictício do que o sfc.exe: P)