Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo aborda a configuração específica do Windows para o OpenSSH Server (sshd).
O OpenSSH mantém a documentação detalhada das opções de configuração online em OpenSSH.com, que não está duplicada neste conjunto de documentação.
Arquivos de configuração openSSH
O OpenSSH tem arquivos de configuração para configurações de servidor e cliente. O OpenSSH é de software livre e foi adicionado aos sistemas operacionais Windows Server e Windows Client, começando com o Windows Server 2019 e o Windows 10 (build 1809). Como resultado, a documentação de software livre para arquivos de configuração openSSH não é repetida aqui. Arquivos de configuração do cliente e podem ser encontrados na página manual ssh_config e para arquivos de configuração do Servidor OpenSSH podem ser encontrados na página manual sshd_config.
O OpenSSH Server (sshd) lê os dados de configuração de %programdata%\ssh\sshd_config por padrão ou um arquivo de configuração diferente pode ser especificado iniciando sshd.exe
com o parâmetro -f
. Se o arquivo estiver ausente, o sshd gerará um com a configuração padrão quando o serviço for iniciado.
No Windows, o Cliente OpenSSH (ssh) lê dados de configuração de um arquivo de configuração na seguinte ordem:
- Ao iniciar o
ssh.exe
com o parâmetro-F
, especificando um caminho para um arquivo de configuração e um nome de entrada desse arquivo. - O arquivo de configuração de um usuário em %userprofile%\.ssh\config.
- O arquivo de configuração em todo o sistema em %programdata%\ssh\ssh_config.
Configurando o shell padrão para OpenSSH no Windows
O shell de comando padrão fornece a experiência que um usuário vê ao se conectar ao servidor usando SSH. O Windows padrão inicial é o shell do Comando do Windows (cmd.exe). O Windows também inclui o PowerShell e shells de comando de terceiros também estão disponíveis para Windows e podem ser configurados como o shell padrão para um servidor.
Para definir o shell de comando padrão, primeiro confirme se a pasta de instalação do OpenSSH está no caminho do sistema. Para o Windows, a pasta de instalação padrão é %systemdrive%\Windows\System32\openssh. O comando a seguir mostra a configuração do caminho atual e adiciona a pasta de instalação padrão do OpenSSH a ela.
Shell de comando | Comando a ser usado |
---|---|
Comando | path |
PowerShell | $env:path |
A configuração do shell ssh padrão é feita no Registro do Windows adicionando o caminho completo para o executável do shell em HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
, no valor da cadeia de caracteres DefaultShell
.
Por exemplo, o comando do PowerShell elevado a seguir define o shell padrão para o Servidor OpenSSH como powershell.exe
(definir este caminho não se aplica ao Cliente OpenSSH):
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Configurações do Windows no sshd_config
No Windows, o sshd lê dados de configuração de %programdata%\ssh\sshd_config por padrão ou um arquivo de configuração diferente pode ser especificado iniciando sshd.exe
com o -f
parâmetro.
Se o arquivo estiver ausente, o sshd gerará um com a configuração padrão quando o serviço for iniciado.
Os elementos a seguir fornecem a configuração específica do Windows possível por meio de entradas em sshd_config. Há outras configurações possíveis que não estão listadas aqui, pois são abordadas detalhadamente na documentação online do Win32 OpenSSH.
Dica
O Servidor OpenSSH (sshd) lê o arquivo de configuração quando o serviço é iniciado. Todas as alterações no arquivo de configuração exigem que o serviço seja reiniciado.
AllowGroups, AllowUsers, DenyGroups, DenyUsers
Controlar quais usuários e grupos podem se conectar ao servidor é feito usando as diretivas AllowGroups, AllowUsers, DenyGroups e DenyUsers . As diretivas allow/deny são processadas na seguinte ordem: DenyUsers, AllowUsers, DenyGroups e, por fim, AllowGroups. Todos os nomes de conta devem ser especificados em letras minúsculas. Para obter mais informações sobre PATTERNS e curinga no ssh_config, consulte a página do manual do sshd_config OpenBSD.
Ao configurar regras baseadas em usuário/grupo com um usuário ou grupo de domínio, use o seguinte formato: user?domain*
.
O Windows permite vários formatos para especificar entidades de domínio, mas pode entrar em conflito com padrões padrão do Linux.
Por esse motivo, *
é adicionado para cobrir Nomes de Domínio Completamente Qualificados (FQDNs).
Além disso, essa abordagem usa ?
, em vez de @
, para evitar conflitos com o formato username@host.
Os usuários/grupos do grupo de trabalho e as contas conectadas à Internet são sempre resolvidos para o nome da conta local (sem parte do domínio, semelhante a nomes Unix padrão). Os usuários e grupos de domínio são estritamente resolvidos conforme o formato NameSamCompatible: domain_short_name\user_name. Todas as regras de configuração baseadas em usuário/grupo precisam aderir a esse formato.
O exemplo a seguir nega contoso\admin do host 192.168.2.23 e bloqueia todos os usuários do domínio contoso. Ele também permite usuários que são membros dos grupos contoso\sshusers e contoso\serveroperators.
DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators
O exemplo a seguir permite que a entrada do usuário localusers do host 192.168.2.23 e permite os membros do grupo sshusers.
AllowUsers localuser@192.168.2.23
AllowGroups sshusers
Métodos de Autenticação
Para o Windows OpenSSH, os únicos métodos de autenticação disponíveis são password
e publickey
.
Importante
No momento, não há suporte para autenticação usando uma conta do Microsoft Entra.
AuthorizedKeysFile
O padrão é .ssh/authorized_keys
. Se o caminho não for absoluto, ele será levado em relação ao diretório inicial do usuário (ou ao caminho da imagem do perfil), por exemplo, C:\Users\username. Se o usuário pertencer ao grupo de administradores, %programdata%/ssh/administrators_authorized_keys será usado.
Dica
O arquivo administrators_authorized_keys deve ter apenas entradas de permissão para a conta NT Authority\SYSTEM e o grupo de segurança BUILTIN\Administrators. A conta NT Authority\SYSTEM deve receber controle total. O grupo de segurança BUILTIN\Administrators é necessário para que os administradores gerenciem as chaves autorizadas, você pode escolher o acesso necessário. Para conceder permissões, você pode abrir um prompt do PowerShell com privilégios elevados e executar o comando icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
.
ChrootDirectory (suporte adicionado à v7.7.0.0)
Essa diretiva só tem suporte com sessões sftp. Uma sessão remota cmd.exe
em não honraria a ChrootDirectory
. Para configurar um servidor chroot exclusivo para sftp, defina ForceCommand
como internal-sftp. Você também pode configurar scp com chroot, implementando um shell personalizado que só permitiria scp e sftp.
Autenticação GSSAPI
O GSSAPIAuthentication
argumento de configuração especifica se a autenticação de usuário baseada em GSSAPI é permitida. O padrão para GSSAPIAuthentication
é não.
A autenticação GSSAPI também requer o uso da opção -K
que especifica o nome do host ao usar o cliente OpenSSH. Como alternativa, você pode criar uma entrada correspondente na configuração do cliente SSH. No Windows, o cliente OpenSSH lê dados de configuração de %userprofile%.ssh\config por padrão.
Você pode ver um exemplo de configuração do cliente GSSAPI OpenSSH:
# Specify a set of configuration arguments for a host matching the pattern SERVER01.contoso.com
# Patterns are case sensitive
Host SERVER01.contoso.com
# Enables GSSAPI authentication
GSSAPIAuthentication yes
# Forward (delegate) credentials to the server.
GSSAPIDelegateCredentials yes
Importante
O GSSAPI só está disponível a partir do Windows Server 2022, Windows 11 e Windows 10 xxxx.
HostKey
Os padrões são:
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
Se os padrões não estiverem presentes, o sshd os gerará automaticamente no início do serviço.
Corresponder a
Corresponde às condições usando um ou mais critérios. Após uma correspondência, os argumentos de configuração subsequentes são aplicados. As correspondências usam as regras padrão abordadas na seção AllowGroups, AllowUsers, DenyGroups, DenyUsers. Os nomes de usuário e grupo devem estar em letras minúsculas.
PermitRootLogin
Não aplicável no Windows. Para impedir que os administradores entrem, use Administradores com a diretiva DenyGroups .
SyslogFacility
Se você precisar de log baseado em arquivo, use LOCAL0. Os logs são gerados em %programdata%\ssh\logs. Para qualquer outro valor, incluindo o valor padrão, AUTH direciona o registro de logs para o ETW. Para obter mais informações, consulte Logging Facilities in Windows.
Argumentos de configuração
O seguinte argumento de configuração está disponível a partir do Windows Server 2022, Windows 11 e Windows 10 xxxx:
- Autenticação GSSAPI
Os seguintes argumentos de configuração não estão disponíveis na versão OpenSSH que é fornecida no Windows Server e no cliente Windows:
- AcceptEnv
- Permitir redirecionamento local de fluxo
- AuthorizedKeysCommand
- AuthorizedKeysCommandUser
- AuthorizedPrincipalsCommand
- AuthorizedPrincipalsCommandUser
- ExporInformaçõesDeAutenticação
- GSSAPICleanupCredentials
- GSSAPIStrictAcceptorCheck
- HostbasedAcceptedKeyTypes
- Autenticação Baseada em Host
- HostbasedUsesNameFromPacketOnly
- IgnoreRhosts
- IgnoreUserKnownHosts
- KbdInteractiveAuthentication
- KerberosAuthentication
- KerberosGetAFSToken
- KerberosOrLocalPasswd
- KerberosTicketCleanup
- PermitTunnel
- PermitUserEnvironment
- PermitUserRC
- PidFile
- PrintLastLog
- PrintMotd
- RDomain
- StreamLocalBindMask
- StreamLocalBindUnlink
- StrictModes
- X11DisplayOffset
- X11Forwarding
- X11UseLocalhost
- XAuthLocation