- 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.
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

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.
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.
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
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.
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.