Guia completo para usar SSH do PowerShell: configuração e exemplos práticos

Última atualização: 07/05/2025
autor: Isaac
  • PowerShell permite que você conecte e gerencie sistemas remotos usando SSH nativamente em Windows 10/11 e versões recentes.
  • Instalar e configurar o OpenSSH como cliente e servidor é simples, permitindo autenticação por senha ou chave pública com base nas necessidades de segurança.
  • Os recursos avançados do PowerShell SSH incluem automação, gerenciamento de sessão e personalização, facilitando a administração remota em ambientes mistos.

Conexão SSH do PowerShell

Poder conectar via SSH diretamente do PowerShell Não é mais uma tarefa reservada aos gurus da administração. Hoje, qualquer usuário do Windows pode acessar, gerenciar servidores e até mesmo automatizar tarefas por meio de um terminal SSH graças às integrações nativas no Windows 10 e versões posteriores. O caminho para fazer isso não é apenas mais simples do que nunca, mas também foi aprimorado em termos de estabilidade e segurança, tornando-se uma alternativa robusta aos clientes externos tradicionais.

Se você já precisou gerenciar um sistema remoto, copiar arquivos, revisar toras o corrida comandos em um servidor Linux ou Windows sem sair da sua área de trabalho, este guia detalhado servirá como referência. Você aprenderá tudo, desde os requisitos, instalação e configuração do OpenSSH em diferentes plataformas até exemplos práticos de comandos básicos e recursos avançados do PowerShell SSH para aproveitar ao máximo a administração remota.

O que é SSH e por que usá-lo no PowerShell?

SSH (Secure Shell) é um protocolo de comunicação seguro que permite acessar e gerenciar sistemas remotos usando um terminal.. Sua maior vantagem sobre outros protocolos, como o Telnet, é a criptografia de ponta a ponta, que garante que todas as informações, incluindo nomes de usuário e senhas, trafeguem completamente protegidas.

O PowerShell, por outro lado, é o console de comando avançado do Windows, usado para tarefas de usuário e administração. Há vários anos, o Windows inclui um cliente SSH nativo, permitindo que você aproveite ao máximo o poder do SSH diretamente do PowerShell, tornando fácil e seguro gerenciar Linux, Windows e outros dispositivos remotos.

Pré-requisitos para usar SSH do PowerShell

Requisitos do SSH PowerShell

Antes de começar a gerenciar sistemas remotos do PowerShell, você precisa verificar alguns requisitos básicos no seu computador e no computador de destino:

  • PowerShell atualizado: É recomendável usar o PowerShell 6 ou posterior para aproveitar todos os recursos. No Windows 10 e 11 ele vem pré-instalado, mas é uma boa ideia verificar a versão com o comando $ PSVersionTable.PSVersion.
  • Cliente OpenSSH: Você precisa ter o cliente OpenSSH instalado. A partir do Windows 10 (build 1809) e do Windows Server 2019, ele é incluído como um recurso opcional, embora você possa instalá-lo manualmente, se necessário.
  • Servidor SSH habilitado no computador remoto: O sistema ao qual você se conectará deve ter SSH habilitado (pode ser uma máquina Linux, uma máquina Windows, um dispositivo de rede, etc.).
  • Acesso à rede: O computador do qual você está se conectando deve ser capaz de acessar o IP ou domínio do servidor SSH, e é essencial que a porta 22 esteja aberta no seu firewall.
  • Autorizações de usuário: Embora ser um administrador nem sempre seja essencial, em muitos cenários você precisará de permissões elevadas para instalar recursos ou acessar sistemas remotos.
  Como corrigir erros de arquivo ZIP no Windows: guia completo

Verifique a instalação e a versão do OpenSSH no Windows

Para verificar se você tem o cliente OpenSSH disponível no seu sistema, abra o PowerShell e execute:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Você verá o status instalado (Installed) ou não presente (NotPresent) tanto para o cliente quanto para o servidor. Caso não esteja instalado, você pode adicioná-lo com:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Para o servidor, caso você queira habilitar o recebimento de conexões SSH no seu próprio computador:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Após a instalação, você poderá usar o comando 'ssh' diretamente no PowerShell ou no Prompt de Comando.

Configurar e iniciar o serviço SSH no Windows

Se você for aceitar conexões SSH no Windows, precisará certificar-se de que o serviço esteja iniciado. Para iniciá-lo e configurá-lo para iniciar automaticamente sempre que você inicializar o sistema, execute:

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

É recomendável validar se já existe uma regra de firewall que permita o tráfego de entrada pela porta 22 (SSH):

if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
 Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
 New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
 Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

Introdução: Conexão via SSH do PowerShell

Depois de configurar tudo, você pode iniciar uma sessão SSH com um simples comando do PowerShell:

ssh usuario@servidor

Lembre-se de substituir "usuário" pelo seu nome de usuário na máquina remota e "servidor" pelo IP ou nome DNS. Ao executá-lo, ele solicitará que você aceite a chave do host (na primeira vez) e a senha.

Exemplo real de conexão a um servidor Linux:

ssh [email protected]

Você também pode se conectar a outros sistemas Windows com um servidor SSH ativo ou a dispositivos de rede compatíveis.

Parâmetros avançados e autenticação de chave

O SSH permite muita flexibilidade em como você se autentica e estabelece uma conexão. Os parâmetros mais comuns são:

  • -i Para especificar uma chave privada para autenticação sem senha: ssh -i ruta/claves/id_rsa usuario@servidor
  • -p Para especificar uma porta diferente de 22: ssh -p 2222 usuario@servidor
  • -v para modo detalhado, útil para depuração.
  Domine grupos de encaixe e layouts de encaixe no Windows 11: organização avançada de janelas

No PowerShell, você pode usar chaves geradas com ssh-keygen e copiá-las para o servidor remoto para maior segurança e conveniência, evitando senhas.

Gerencie e automatize sessões SSH avançadas com o PowerShell

Além do comando básico, o PowerShell incorpora cmdlets avançados para trabalhar com sessões SSH, como New-PSSession, Enter-PSSession e Invoke-Command. Isso aprimora a administração remota, permitindo que você automatize scripts e tarefas de manutenção sem a necessidade de um login manual toda vez.

  • Nova sessão PSSession permite que você crie uma nova sessão remota especificando o host, o usuário e a senha ou a chave pública.
  • Enter-PSSession permite que você entre interativamente em uma sessão remota, executando comandos como se estivesse fisicamente no outro computador.
  • Invoke-Command executa comandos ou blocos de script remotamente, ideal para administração em massa ou tarefas automatizadas.

Exemplo para iniciar uma sessão:

New-PSSession -HostName 192.168.1.100 -UserName admin

Para entrar na sessão criada:

Enter-PSSession -Session $session

Você pode transferir arquivos, monitorar processos, automatizar tarefas e muito mais, tudo com a conveniência do PowerShell.

Configurar o servidor SSH no Linux e macOS para conexões do PowerShell

Você não só pode gerenciar computadores Windows pelo PowerShell, como também pode acessar servidores Linux e macOS. Nesses computadores, você precisará garantir que o serviço OpenSSH esteja instalado e em execução. É assim que é feito no Linux (por exemplo, Ubuntu):

sudo apt install openssh-client
sudo apt install openssh-server

Para verificar se está ativo:

sudo systemctl status sshd

No macOS, basta habilitar o acesso remoto em "Compartilhamento" – "Login remoto" nas configurações do sistema.

Em ambos os casos, você pode editar o arquivo sshd_config para permitir autenticação por senha ou chave pública e até mesmo definir o PowerShell como o shell padrão.

Comandos SSH úteis do PowerShell

Uma vez conectado, é possível executar uma ampla gama de comandos remotos do sistema. Alguns exemplos úteis para gestão diária:

  • ls / dir: listar o conteúdo de um diretório
  • cd: alterar diretório
  • toque / Novo-Item: cria novos arquivos
  • rm / Remover-Item: apaga arquivos ou pastas
  • mv / Mover-Item: mover ou renomear arquivos
  • scp: transfere arquivos entre cliente e servidor
  • useradd: adicionar usuários
  Tela Azul vs. Tela Preta da Morte: Diferenças e Soluções

Esses comandos permitem administração, automação e scripts completos para tarefas repetitivas ou infraestruturas complexas.

Configuração avançada e personalização de sessões SSH no PowerShell

O PowerShell SSH oferece muitas opções avançadas para personalizar a experiência de acordo com suas necessidades:

  • Edite o arquivo de configuração em $env:ProgramData\ssh\sshd_config para ajustar autenticação, algoritmos, regras e muito mais.
  • Permitir ou bloquear acesso por senha ou chave pública de acordo com as necessidades de segurança.
  • Adicionar subsistemas como o PowerShell para que sessões remotas iniciem diretamente no PowerShell usando 'Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -nologo'.
  • Reinicie os serviços e ajuste as variáveis ​​de ambiente para que tudo funcione corretamente.