Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo aborda a configuração específica do Windows para OpenSSH Server (sshd).
O OpenSSH mantém documentação detalhada para opções de configuração on-line no OpenSSH.com, que não é duplicada neste conjunto de documentação.
Arquivos de configuração OpenSSH
O OpenSSH tem arquivos de configuração para as configurações do servidor e do cliente. O OpenSSH é de código aberto 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 código aberto para arquivos de configuração OpenSSH não é repetida aqui. Arquivos de configuração do cliente e podem ser encontrados na página de manual do ssh_config e para arquivos de configuração do OpenSSH Server podem ser encontrados na página de manual sshd_config.
Open SSH Server (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 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 OpenSSH Client (ssh) lê dados de configuração de um arquivo de configuração na seguinte ordem:
- Ao lançar
ssh.exe
com o parâmetro-F
, especificando um caminho para um ficheiro de configuração e um nome de entrada desse ficheiro. - Um arquivo de configuração do usuário em %userprofile%\.ssh\config.
- O arquivo de configuração de 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 de 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 o 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 Windows, a pasta de instalação padrão é %systemdrive%\Windows\System32\openssh. O comando a seguir mostra a configuração de caminho atual e adiciona a pasta de instalação padrão do OpenSSH a ela.
Shell de comando | Comando a utilizar |
---|---|
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 ao HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
valor de cadeia de caracteres DefaultShell
.
Como exemplo, o seguinte comando elevado do PowerShell define o shell padrão como sendo powershell.exe
para o OpenSSH Server (a configuração desse caminho não se aplica ao OpenSSH Client):
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ê os dados de configuração de %programdata%\ssh\sshd_config por padrão, ou pode-se especificar um arquivo de configuração diferente ao iniciar sshd.exe
com -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 no sshd_config. Há outras definições de configuração possíveis que não estão listadas aqui, pois elas são abordadas em detalhes na documentação on-line do Win32 OpenSSH.
Sugestão
O OpenSSH Server (sshd) lê o arquivo de configuração quando o serviço é iniciado. Quaisquer alterações no arquivo de configuração exigem que o serviço seja reiniciado.
PermitirGrupos, PermitirUtilizadores, NegarGrupos, NegarUtilizadores
O controle de 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, finalmente, AllowGroups. Todos os nomes de conta devem ser especificados em minúsculas. Para obter mais informações sobre PATTERNS e wildcard no ssh_config, consulte a página de 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 abranger os FQDNs.
Além disso, essa abordagem usa ?
, em vez de @
, para evitar conflitos com o formato username@host.
Usuários/grupos de grupo de trabalho e contas conectadas à Internet são sempre resolvidos para seu nome de conta local (sem parte de domínio, semelhante aos nomes Unix padrão). Os utilizadores e grupos de domínio são estritamente resolvidos para 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 o usuário localusers entre a partir do host 192.168.2.23 e permite que 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
Atualmente, não há suporte para autenticação usando uma conta do Microsoft Entra.
FicheiroDeChavesAutorizadas
A predefinição é .ssh/authorized_keys
. Se o caminho não for absoluto, ele será tomado em relação ao diretório base do usuário (ou caminho da imagem de perfil), por exemplo, C:\Users\username. Se o utilizador pertencer ao grupo de administradores, %programdata%/ssh/administrators_authorized_keys será utilizado.
Sugestão
O arquivo administrators_authorized_keys só deve ter entradas de permissão para a conta NT Authority\SYSTEM e o grupo de segurança BUILTIN\Administrators. A conta NT Authority\SYSTEM deve ter 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 na v7.7.0.0)
Esta diretiva só é suportada com sessões sftp. Uma sessão remota em cmd.exe
não honraria o ChrootDirectory
. Para configurar um servidor chroot somente sftp, defina ForceCommand
como internal-sftp. Você também pode configurar scp com chroot, implementando um shell personalizado que permitiria apenas 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
especificando 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.
Chave de Host
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 quando o serviço for iniciado.
Partida
Corresponde às condições usando um ou mais critérios. Após uma correspondência, os argumentos de configuração subsequentes são aplicados. Matches usa as regras de padrão abordadas na seção AllowGroups, AllowUsers, DenyGroups, DenyUsers . Os nomes de usuários e grupos devem estar em minúsculas.
PermitRootLogin (Permitir Login de Root)
Não aplicável no Windows. Para impedir que os administradores entrem, use Administradores com a diretiva DenyGroups .
SyslogFacility
Se precisar de registos em log baseados em ficheiros, use LOCAL0. Os logs são gerados em %programdata%\ssh\logs. Para qualquer outro valor, incluindo o valor padrão, o AUTH direciona o log 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 fornecida no Windows Server e no cliente Windows:
- AcceptEnv
- Permitir Encaminhamento Local de Fluxo
- ComandoChavesAutorizadas
- UtilizadorDoComandoAuthorizedKeys
- Comando de Principais Autorizados
- UtilizadorComandoPrincipaisAutorizados
- ExporInformaçõesDeAutenticação
- GSSAPICleanupCredentials
- GSSAPIStrictAcceptorCheck
- TiposDeChaveAceiteBaseadosEmHost
- AutenticaçãoBaseadaEmHost
- UsaNomeDoPacoteSomenteBaseadoNoHost
- IgnoreRhosts
- IgnorarHostsConhecidosDoUsuário
- AutenticaçãoInterativaKbd
- KerberosAuthentication
- KerberosGetAFSToken
- KerberosOrLocalPasswd
- KerberosTicketCleanup
- PermitTunnel
- PermitirAmbienteDoUtilizador
- PermitirUtilizadorRC
- PidFile
- ImprimirÚltimoLog
- PrintMotd
- RDomain
- StreamLocalBindMask
- StreamLocalBindUnlink
- Modos Rígidos
- X11DisplayOffset
- X11Encaminhamento
- X11UseLocalhost
- XAuthLocalização