Até recentemente, se você quisesse usar SSH no Windows, precisaria contar com clientes de terceiros como PuTTY ou instalar pacotes de servidor SSH de fontes semelhantes.
No entanto, a atualização de abril de 2018 (versão 1803) introduziu o OpenSSH como um recurso integrado. Contanto que você esteja executando versões suportadas do Windows, você pode instalar o cliente OpenSSH e os componentes do servidor como recursos opcionais.
Como tal, abordaremos os pré-requisitos, etapas completas para instalar o OpenSSH usando vários métodos, e como começar neste artigo.
Como instalar o OpenSSH
Antes de começar, você deve garantir que os seguintes requisitos sejam atendidos:
Recursos opcionais (GUI)
A maneira mais fácil de instalar o OpenSSH no Windows é na página Recursos opcionais nas Configurações do Windows.
Pressione Win + I e vá para Aplicativos > Recursos opcionais. Clique em Exibir recursos na seção Adicionar um recurso opcional.
Selecione OpenSSH Client e OpenSSH Server na lista e pressione Próximo > Instalar.

Após a instalação dos componentes, pressione Win + R, digite services.msc e pressione Enter. Localize os serviços OpenSSH SSH Server e OpenSSH Authentication Agent aqui.
Clique duas vezes neles e inicie esses serviços. Se desejar, você também pode alterar o tipo de inicialização para Automático. Salve as alterações posteriormente.
Em seguida, pressione Win + R, digite wf.msc e pressione Enter. Na seção Inbound Rules, verifique se a regra OpenSSH SSH Server (sshd) está ativada.
A configuração básica está concluída. Verifique a seção Introdução ao OpenSSH para obter mais etapas. Você também pode seguir as mesmas etapas para desinstalar o OpenSSH, se necessário.
PowerShell
Se você quiser ser mais eficiente, também pode executar as mesmas etapas acima em uma janela elevada do PowerShell.
Pressione Win + R, digite powershell e pressione CTRL + Shift + Enter. Primeiro, certifique-se de que os componentes do OpenSSH estejam disponíveis:
Get-WindowsCapability-Online | Where-Object Name-like’OpenSSH*’
Em seguida, instale o cliente OpenSSH e os componentes do servidor:
Add-WindowsCapability-Online-Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability-Online-Name OpenSSH.Server~~ ~~0.0.1.0
Inicie os serviços sshd e ssh-agent e altere seu tipo de inicialização para Automático como tal:
Set-Service-Name sshd-StartupType’Automatic’-Status Running
Set-Service-Name ssh-agent-StartupType’Automatic’-Status em execução
Em seguida, configure a regra de firewall do Windows necessária para o tráfego SSH:
New-NetFirewallRule-Name’OpenSSH-Server-In-TCP’-DisplayName’OpenSSH Server (sshd)’-Enabled True-Direction Inbound-Protocol TCP-Ação Permitir-LocalPort 22
Agora que a configuração está concluída, você pode começar a usar o SSH. Consulte a seção introdução ao OpenSSH se precisar de ajuda com isso. Além disso, se você deseja desinstalar os componentes do OpenSSH, aqui estão os comandos necessários:
Remove-WindowsCapability-Online-Name OpenSSH.Client~~~~0.0.1.0
Remove-WindowsCapability-Online-Name OpenSSH.Server ~~~~0.0.1.0
GitHub (MSI)
Se você baixou o OpenSSH pacote do GitHub, você pode instalar os componentes usando o instalador MSI com msiexec/i
Por exemplo, se o arquivo estiver em seu diretório atual, use
msiexec/i openssh.msi Se o arquivo estiver, digamos, na sua pasta de downloads, use
msiexec/i C:\users\anup\downloads\openssh.msi Para desinstalar o OpenSSH, use
msiexec/x
msiexec/i openssh.msi ADDLOCAL=Client
msiexec/i openssh.msi ADDLOCAL=Server
msiexec/i openssh.msi REMOVE=Client
msiexec/i openssh.msi REMOVE=Server
Depois de instalar os componentes, siga estas etapas para atualizar a variável PATH do sistema:
Pressione Win + R, digite systempropertiesadvanced e pressione Enter. Clique em Variáveis de ambiente. Na seção Variáveis do sistema, selecione Caminho e clique em Editar.
Verifique se há %systemroot%\System32\openssh aqui. Se não estiver presente, clique em Novo e adicione-o à lista. Observe que este é o caminho de instalação padrão. Se você instalou o OpenSSH em um caminho diferente, altere o valor de acordo com esta etapa.
Pressione Ok > Ok para salvar as alterações.
Agora, você pode executar Get-Service-Name ssh* no PowerShell para verificar se os componentes foram instalados corretamente. Se você também precisar iniciar os serviços necessários ou abrir portas, consulte uma das seções anteriores para obter as etapas.
Finalmente, se você quiser usar outros métodos como Winget ou Chocolatey, recomendamos verificar o wiki do OpenSSH no GitHub. Além das instruções de instalação, ele também possui vários exemplos de uso e manuais que podem ser úteis.
Configuração do servidor OpenSSH
Por padrão, o servidor OpenSSH (sshd) no Windows lê o dados de configuração de %programdata%\ssh\sshd_config. Várias opções de configuração estão listadas neste arquivo, mas como a implementação do Windows do OpenSSH ainda é bastante nova, apenas algumas configurações são suportadas no momento.
Listamos algumas alterações de configuração comumente feitas abaixo para referência. Recomendamos verificar a configuração do servidor OpenSSH guia da Microsoft ou o do GitHub para obter a lista completa de opções. Além disso, não se esqueça de reiniciar o serviço sshd para aplicar as alterações feitas.
Descomente a linha Port e altere o valor se desejar alterar a porta SSH. Você também precisará adicionar uma regra de firewall para permitir o tráfego de entrada na referida porta.
Altere o ListenAddress de 0.0.0.0 para outra coisa se você quiser apenas ouvir um endereço IP específico. Adicione várias linhas de ListenAddress da mesma maneira se quiser ouvir vários endereços IP. Altere GSSAPIAuthentication para sim se quiser usar a autenticação Kerberos. Adicione as diretivas AllowGroups, AllowUsers, DenyGroups e DenyUsers para controlar quais grupos e usuários podem acessar o servidor SSH. Se estiver trabalhando com usuários e grupos de domínio, verifique os exemplos a seguir para referência de formato:
DenyUsers tnt\[email protected]
DenyUsers tnt\*
AllowGroups tnt\sshclients tnt\serveradmins Se estiver lidando com usuários de grupo de trabalho e groups, verifique estes exemplos:
AllowUsers [email protected]
AllowGroups sshclients Por fim, você pode usar o seguinte comando no PowerShell para definir o shell OpenSSH padrão como PowerShell em vez do prompt de comando:
New-ItemProperty-Path”HKLM:\SOFTWARE\OpenSSH”-Name DefaultShell-Value”C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”-PropertyType String-Force
Introdução ao OpenSSH
Você pode usar qualquer um dos métodos listados acima para configurar outro sistema Windows como um cliente OpenSSH, servidor ou ambos. E se você é novo no SSH, aqui estão algumas etapas básicas para começar:
Primeiro, pressione Win + R, digite sysdm.cpl e pressione Enter. Verifique se você é um usuário de grupo de trabalho ou domínio aqui.
Pressione Win + R, digite powershell e pressione Enter. Se você for um usuário de grupo de trabalho, digite o seguinte comando e pule para a Etapa 6:
ssh user@host
Se você for um usuário de domínio, insira qualquer um dos seguintes comandos:
ssh-l user@domain host
ssh domínio\usuário@host
ssh usuário@domínio@host
ssh usuário@host
No primeiro login, você terá que confirmar que o host é confiável. Se você digitar Sim, o host será adicionado à lista de hosts conhecidos.
Agora, insira a senha da conta do host e pressione Enter.
A autenticação baseada em senha geralmente é boa, mas, idealmente, você deve usar métodos de autenticação ainda mais seguros, como Kerberos e chaves SSH. Para Kerberos, siga as etapas listadas abaixo:
No servidor ingressado no domínio, navegue até %programdata%\ssh\. Abra o arquivo sshd_config com um editor de texto. Remova o comentário da linha GSSAPIAuthentication, defina-a como yes e salve as alterações.
No Powershell, use os seguintes comandos para reiniciar o serviço sshd e aplicar as alterações acima:
net stop sshd
net iniciar sshd
Agora, no cliente Windows que está conectado como um usuário de domínio, digite ssh-K hostname.
Autenticar com chave SSH
Ao conectar entre domínios, a autenticação baseada em senha não é recomendada, pois é vulnerável a força bruta. Em vez disso, você deve usar a autenticação de chave pública. Isso usa algoritmos criptográficos para gerar um arquivo de chave pública e um privado.
A chave pública de um usuário é armazenada no servidor SSH e é comparada com a chave privada do lado do cliente para autenticação. Desde que a chave privada esteja protegida adequadamente, esse método de autenticação é muito mais seguro.
Você precisará gerar o par de chaves no sistema cliente, criar um arquivo de chaves autorizadas no servidor e armazenar a chave pública do cliente neste arquivo. Para fazer isso, comece com as seguintes etapas no sistema do servidor:
Pressione Win + R, digite powershell e pressione CTRL + Shift + Enter. Crie o arquivo administrators_authorized_keys. Para usuários no grupo Administradores:
New-Item-Type File-Path C:\ProgramData\ssh\administrators_authorized_keys Para usuários padrão:
New-Item-Type File-Path C:\Users\username\.ssh \administrators_authorized_keys Em nosso caso, criamos o arquivo usando uma conta de administrador. Se você estiver usando uma conta padrão, altere o caminho do arquivo de acordo com o restante dos comandos. Defina as permissões de acesso para o arquivo de chaves com:
get-acl C:\ProgramData\ssh\ssh_host_dsa_key | set-acl C:\ProgramData\ssh\administrators_authorized_keys
Agora, inicie uma janela Elevated PowerShell no sistema cliente e siga estas etapas:
Use cd ~/.ssh para acessar o diretório.ssh e gerar o par de chaves com ssh-keygen.
Quando o local do arquivo for solicitado, pressione Enter para usar o valor padrão:
C:\Users\username\.ssh\ Adicionar uma frase secreta para sua chave privada se quiser melhorar ainda mais sua segurança.
Agora, chan ge os valores user e host e execute os comandos mostrados abaixo. Ele anexará a chave pública do cliente ao arquivo de chaves autorizadas no servidor. $public_key=Get-Content ~/.ssh/id_rsa.pub ssh user@host”‘$($public_key)’| Out-File C:\ProgramData\ssh\administrators_authorized_keys-Encoding UTF8-Append”
Digite sua senha para aprovar a operação. Agora, você poderá se conectar usando a autenticação de chave pública.
Solução de erros comuns
Erros SSH como conexão recusada na porta 22 ou conexão com tempo limite esgotado são bastante comuns. Se você seguiu as etapas deste artigo, as etapas básicas, como garantir que os serviços SSH estejam em execução, reiniciá-los, permitir o tráfego SSH pelo firewall, adicionar SSH ao PATH do sistema, etc., já serão abordadas.
Além disso, aqui estão mais algumas etapas de solução de problemas que vale a pena tentar:
Primeiro, certifique-se de que as etapas mencionadas acima também sejam executadas no sistema remoto. Tente novamente e verifique se inseriu as credenciais corretas. Use o endereço IP do host em vez do nome do host. Se isso funcionar, resolva os problemas de DNS limpando o cache ou usando um servidor diferente. Faça ping no host para garantir que não haja perda de pacotes. Verifique a porta SSH e ListenAddress no arquivo sshd_config do servidor. Use sinalizadores detalhados (ssh-v ou ssh-vvv) para obter mais detalhes sobre o que está acontecendo de errado.