O OpenSSH no Windows Server ativa-se a partir de uma consola PowerShell com privilégios elevados. Add-WindowsCapability instala o OpenSSH.Server, Start-Service sshd inicia o serviço e Set-Service torna-o automático. Há um pormenor importante para iniciar sessão com chave a partir do telemóvel: as contas de administrador leem C:\ProgramData\ssh\administrators_authorized_keys, e não o authorized_keys do seu perfil. A porta predefinida é a TCP 22.

Instalar o OpenSSH.Server no Windows Server com Add-WindowsCapability

O servidor OpenSSH do Windows é distribuído como uma capacidade opcional do sistema. Dois cmdlets, executados numa consola PowerShell de administrador, verificam o seu estado e instalam-no:

# Check client and server state
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

# Install the server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

O primeiro comando indica State : Installed ou State : NotPresent para OpenSSH.Client e OpenSSH.Server. Se o servidor já aparecer como instalado, passe ao passo seguinte. A instalação cria o serviço sshd e a pasta C:\ProgramData\ssh. Essa pasta contém as chaves do anfitrião e o sshd_config.

Iniciar o serviço sshd do Windows e abrir a porta 22

Após a instalação, o sshd existe, mas está parado e configurado para arranque manual. Estes comandos iniciam-no, tornam-no automático e verificam a firewall:

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-Service sshd

# Check for an inbound SSH rule
Get-NetFirewallRule -Name *ssh*

# If missing, create one for TCP 22
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

C:\ProgramData\ssh\sshd_config aceita as mesmas diretivas que em Unix, como PasswordAuthentication, Port ou AllowGroups. A referência completa é a página de manual do sshd_config. Execute Restart-Service sshd após cada alteração. Se o servidor não tiver IP público, ou se preferir não expor a porta 22, uma rede mesh privada sem portas abertas como o Prialo, ou o Tailscale, permite aceder-lhe sem mexer no router.

administrators_authorized_keys: porque é que a sua chave SSH falha no Windows Server

Para os membros do grupo local de administradores, o sshd ignora %USERPROFILE%\.ssh\authorized_keys. O sshd_config predefinido termina com este bloco:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Por isso, a chave pública do telemóvel vai para esse ficheiro partilhado. Além disso, o ficheiro só pode estar acessível aos Administradores e ao SYSTEM; se herdar permissões para outros utilizadores, o sshd recusa-o. É o equivalente em ACL a 700 em ~/.ssh e 600 em authorized_keys no Linux. Usar SIDs evita problemas com nomes de grupos localizados:

$key = 'ssh-ed25519 AAAA...your-key... phone'
Add-Content -Path 'C:\ProgramData\ssh\administrators_authorized_keys' -Value $key

# Remove inheritance, keep only Administrators (S-1-5-32-544) and SYSTEM (S-1-5-18)
icacls.exe 'C:\ProgramData\ssh\administrators_authorized_keys' /inheritance:r /grant '*S-1-5-32-544:F' /grant '*S-1-5-18:F'

Use uma chave Ed25519, suportada pelo OpenSSH desde a versão 6.5. A partir do OpenSSH 8.8, a assinatura SHA-1 ssh-rsa está desativada por predefinição, pelo que as chaves RSA antigas produzem falhas confusas. No termi1, a chave é gerada no próprio telemóvel e guardada no armazenamento seguro de chaves do sistema. Só copia a metade pública; a chave privada nunca sai do dispositivo.

PowerShell como shell predefinida do sshd no Windows Server

Sem configuração adicional, uma sessão SSH no Windows abre o cmd.exe. O valor de registo DefaultShell em HKLM:\SOFTWARE\OpenSSH altera isso:

New-ItemProperty -Path 'HKLM:\SOFTWARE\OpenSSH' -Name DefaultShell -Value 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' -PropertyType String -Force
Restart-Service sshd

Se tiver o PowerShell 7 instalado, aponte antes o valor para C:\Program Files\PowerShell\7\pwsh.exe. Com o PowerShell como shell de início de sessão, pode executar Get-Service, Get-EventLog ou Restart-Service a partir do telemóvel sem escrever powershell primeiro.

Ligar ao Windows Server por SSH a partir do telemóvel ou do computador

Os dados de ligação são os mesmos em qualquer cliente: utilizador, IP ou nome do servidor, porta 22 e a chave Ed25519. O que muda é o ambiente de trabalho:

O que se comparaTelemóvel (iOS/Android)Computador
Teclas de que o PowerShell precisaTeclado do termi1 com Tab, Ctrl, Esc e setasTeclado físico completo
Onde fica a chaveArmazenamento seguro de chaves do sistema; a chave privada fica no telemóvelFicheiro em ~/.ssh com permissões 600
Transferência de ficheirosSFTP integrado sem sair da sessãosftp ou scp (SFTP por predefinição desde o OpenSSH 9.0)
Mudança de redeVoltar a ligar por SSH; o Windows não tem mosh-serverVoltar a ligar por SSH
Sem IP públicoPrialo ou Tailscale no telemóvelPrialo ou Tailscale no computador

O PowerShell depende muito do Tab para completar cmdlets e parâmetros, por isso o teclado do terminal SSH termi1 poupa muita escrita. A sua IA transforma uma frase como "reinicia o spooler de impressão" no comando e escreve-o no prompt sem carregar em Enter. Num servidor marcado como produção, o Production Guard trava qualquer Stop-Service ou eliminação antes de chegar ao prompt.

4 erros ao ativar o OpenSSH no Windows Server

  1. Colocar a chave no perfil do administrador. Para o grupo de administradores, prevalece o administrators_authorized_keys.
  2. Deixar a herança de permissões ativa. Se outros utilizadores tiverem acesso ao ficheiro, o sshd ignora-o sem avisar.
  3. Não configurar o arranque automático. Sem Set-Service -StartupType 'Automatic', o SSH deixa de funcionar após um reinício.
  4. Contar com o Mosh ou o tmux. Ambos são ferramentas do lado Unix; uma sessão no Windows é SSH simples.

Perguntas frequentes

Como instalo o OpenSSH Server no Windows Server?

O OpenSSH Server no Windows Server instala-se a partir do PowerShell com privilégios elevados, com Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0. Em seguida, inicie o serviço com Start-Service sshd, defina-o como automático com Set-Service e confirme que uma regra de firewall permite TCP 22 de entrada.

Onde fica a chave pública de um administrador no OpenSSH para Windows?

A chave pública de um administrador no OpenSSH para Windows fica em C:\ProgramData\ssh\administrators_authorized_keys, e não no perfil do utilizador. Só os Administradores e o SYSTEM devem ter acesso ao ficheiro. Configure isto com icacls e remova a herança; se restarem outras permissões, o sshd rejeita a chave.

Posso usar o Mosh para ligar a um Windows Server?

O Mosh precisa do mosh-server a correr na máquina remota, lançado através de uma ligação SSH inicial. O OpenSSH para Windows não o inclui. Por isso, a partir do telemóvel, uma sessão no Windows Server é SSH normal, e mudar de wifi para dados móveis obriga a voltar a ligar.

Como defino o PowerShell como shell SSH no Windows?

O PowerShell passa a ser a shell SSH no Windows quando cria o valor DefaultShell em HKLM:\SOFTWARE\OpenSSH a apontar para powershell.exe ou pwsh.exe. Crie o valor com New-ItemProperty e depois reinicie o serviço com Restart-Service sshd para que as novas sessões o apliquem.