Guia completo para usar SSH do PowerShell: como conectar, gerenciar e automatizar sessões remotas

  • O PowerShell permite conexões SSH nativas em Windows, Linux e macOS para gerenciar sistemas remotos com segurança.
  • O OpenSSH é fácil de instalar e configurar, permitindo autenticação integrada por senha ou chave pública.
  • Os cmdlets do PowerShell oferecem suporte a sessões SSH remotas, execução de comandos e transferência de arquivos sem depender de software externo.

Como usar SSH do PowerShell

Hoje em dia, a administração remota de sistemas é essencial para qualquer administrador de sistemas, desenvolvedor ou entusiasta de computadores que trabalhe com diferentes servidores ou PCs, sejam eles Windows, Linux ou até mesmo macOS. O surgimento do PowerShell com suporte nativo para SSH foi um verdadeiro catalisador. sobre como conectar e gerenciar computadores de forma segura e eficaz. Se você ainda acha que precisa de software externo ou que o processo é complicado, continue lendo: este artigo esclarecerá todas as suas dúvidas e servirá como um guia completo para usar o SSH a partir do PowerShell, abordando instalações, comandos, etapas avançadas e dicas práticas para diferentes ambientes.

Ser capaz de se conectar via SSH a partir do PowerShell não só permite que você gerencie servidores sem sair da cadeira, mas também evita que você precise instalar aplicativos de terceiros, proporcionando uma experiência nativa, segura e multiplataforma. A integração do SSH ao PowerShell simplificou bastante as tarefas de automação e administração, tanto em infraestruturas Windows como em ambientes mistos, onde coexistem sistemas de diferentes fabricantes.

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

SSH (Secure Shell) é um protocolo que permite que você se conecte a outros computadores pela rede de forma criptografada e segura. Substitui protocolos mais antigos como o Telnet, garantindo que quaisquer dados enviados (credenciais ou comandos) trafeguem protegidos contra possíveis interceptações. É o padrão para acesso remoto seguro há anos, especialmente em servidores Linux, mas seu uso em Windows vem crescendo graças à integração de OpenSSH no próprio sistema e no PowerShell.

Com o PowerShell, Os comandos SSH podem ser executados a partir do console Windows ou scripts, gerenciar arquivos, automatizar tarefas e conectar-se a ambos os servidores Windows como Linux ou dispositivos de rede – tudo a partir de uma única ferramenta. Isso a torna uma solução muito flexível e poderosa.

Vantagens de usar SSH do PowerShell

  • Multiplataforma: Gerenciar sistemas Windows, Linux e macOS sem alternar entre aplicativos.
  • Automação simples: Integre comandos SSH aos seus scripts do PowerShell para tarefas recorrentes.
  • Nenhum software adicional: Esqueça a instalação de clientes externos como o PuTTY, pois a funcionalidade vem como padrão Windows 10, 11 e Server 2019 ou superior.
  • Segurança: O SSH criptografa toda a comunicação e suporta autenticação por senha ou chave.

Requisitos para usar SSH no PowerShell

Antes de começar, certifique-se de atender aos seguintes requisitos básicos:

  • PowerShell versão 5.1 ou superior (PowerShell 6 ou 7 recomendado para compatibilidade com SSH e recursos avançados).
  • Cliente SSH instalado. em Windows 10 desde a versão 1809 e Windows No Server 2019, o OpenSSH vem pré-instalado. Para versões anteriores, você pode instalá-lo manualmente na seção de recursos opcionais. Windows.
  • Servidor SSH ativoO computador ao qual você deseja se conectar deve ter um servidor SSH em execução, seja um servidor Linux, outro Windows, um macOS ou algum dispositivo de rede compatível.
  • Permissões apropriadasVocê deve ter credenciais válidas no computador remoto (nome de usuário e senha ou uma chave SSH) e, de preferência, ser um administrador se estiver instalando ou configurando serviços.
  • Acesso à rede e o porta 22 aberto no firewall para permitir conexões SSH.

Instalando e configurando o OpenSSH em Windows

Integração OpenSSH em Windows É um dos maiores avanços na administração remota com o PowerShell. Aqui estão os passos mais importantes para instalá-lo e configurá-lo corretamente:

1. Verifique a presença do OpenSSH

Abra o PowerShell como administrador e execute:

Pegue-WindowsCapacidade-Online | Nome do Objeto Where - como 'OpenSSH*'

Se o status "Instalado" aparecer para o OpenSSH.Client ou OpenSSH.Server, você já o tem disponível. Se aparecer "Não Presente", você precisará instalá-lo.

2. Instale o cliente e/ou servidor OpenSSH

Adicionar-WindowsCapacidade -Online -Nome OpenSSH.Client~~~~0.0.1.0 Adicionar-WindowsCapacidade -Online -Nome OpenSSH.Server~~~~0.0.1.0

O primeiro permite que você se conecte a outros computadores, o segundo permite que outros se conectem ao seu PC.

3. Inicie e configure o serviço OpenSSH

Iniciar-Serviço sshd Definir-Serviço -Nome sshd -Tipo de Inicialização 'Automático'

Isso habilitará o serviço e o configurará para iniciar automaticamente com Windows.

4. Configuração do Firewall

Certifique-se de que seu firewall esteja Windows Permite conexões SSH na porta 22. Quando você instala o OpenSSH, a regra geralmente é criada automaticamente, mas para verificar isso, você pode usar:

Get-NetFirewallRule -Nome "OpenSSH-Server-In-TCP"

Caso não exista, você pode adicioná-lo facilmente:

New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Configurar SSH no Linux, macOS e Windows para sessões remotas do PowerShell

O SSH no PowerShell não serve apenas para conexão com sistemas Linux. A partir do PowerShell 6, ele pode ser usado para executar sessões remotas do PowerShell (PSRemoting) usando SSH como transporte, permitindo sessões verdadeiramente multiplataforma.

Configuração em Windows

  1. Instale a versão mais recente do PowerShell. Você pode baixá-lo em GitHub.
  2. Edite o arquivo sshd_config (No $Env:ProgramData\ssh):
    • Habilitar autenticação de senha:
      PasswordAuthentication sim
    • Adicione o subsistema para PowerShell:
      Subsistema powershell C:/progra~1/powershell/7/pwsh.exe -sshs

      Você pode criar um link simbólico para facilitar o caminho do executável:

      Novo-Item -TipoDeItemLinkSimbólico -Caminho 'C:\ProgramData\ssh\' -Nome 'pwsh.exe' -Valor (Get-Command pwsh.exe).Fonte
    • Se você quiser usar autenticação de chave:
      PubkeyAuthentication sim
  3. Reinicie o serviço sshd:
    Reiniciar-Serviço sshd
  4. Certifique-se de que o caminho do OpenSSH esteja na variável PATH.

Configuração no Linux

  1. Instalar o PowerShell do repositório oficial ().
  2. Instale o servidor SSH:
    sudo apt install openssh-client sudo apt install openssh-server
  3. Edite o arquivo /etc/ssh/sshd_config:
    • Proteja a linha:
      PasswordAuthentication sim
    • Adicione o subsistema PowerShell:
      Subsistema powershell /usr/bin/pwsh -sshs -NoLogo
    • Para autenticação de chave pública:
      PubkeyAuthentication sim
  4. Reinicie o serviço SSH:
    sudo systemctl reinicie sshd.service

Configurações no macOS

  1. Instale a versão mais recente do PowerShell.
  2. Ativar acesso remoto (Login Remoto) nas preferências do sistema, seção 'Compartilhamento'.
  3. Editar /private/etc/ssh/sshd_config e acrescenta:
    • PasswordAuthentication sim
    • Subsistema powershell /usr/local/bin/pwsh -sshs -NoLogo
    • PubkeyAuthentication sim
  4. Reinicie o serviço SSH:
    sudo launchctl stop com.openssh.sshd sudo launchctl start com.openssh.sshd

Conexão e gerenciamento remoto com PowerShell e SSH

Há duas maneiras principais de usar SSH do PowerShell:

  • Comando de execução ssh diretamente do console, assim como nos sistemas Linux ou macOS.
  • Use Cmdlets específicos do PowerShell para sessões remotas: Nova sessão PSSession, Enter-PSSession, Invoke-Command, que suportam uma conexão SSH como transporte, ideal para executar comandos ou scripts em outros computadores.

Conexão básica usando o comando ssh

ssh usuário@IP_ou_nome_do_host

Você será solicitado a informar sua senha ou, se tiver configurado a autenticação de chave pública, ela será usada diretamente.

Você pode usar todos os comandos usuais do Linux e também manipular arquivos, reiniciar serviços, etc. Para encerrar a sessão, use saída.

Cmdlets do PowerShell com SSH

A partir do PowerShell 6, você pode criar sessões remotas usando SSH. Exemplos:

$session = New-PSSession -HostName RemoteServer -UserName yourUser Enter-PSSession $session

Para executar um único comando remoto:

Invocar-Comando -Sessão $session -ScriptBlock { Obter-Processo }

Para liberar a sessão:

Remover-PSSession $session

Exemplos práticos: de Windows para Linux e vice-versa

Imagine que você tem um Windows 11 e você deseja acessar seu servidor Ubuntu. Os passos seriam:

  1. Abra o PowerShell em Windows.
  2. Ele escreve:
    ssh seuUsuário@Ubuntu_IP
  3. Digite a senha quando solicitado.
  4. Agora você pode executar comandos no seu servidor remoto.

O processo é idêntico para conexões entre Linux e Windows, apenas alterando o usuário e o computador de destino.

Transferência de arquivos com PowerShell e SSH

Outra utilidade muito prática é a utilização de scp (cópia segura), que também está disponível em Windows com OpenSSH e permite que você transfira arquivos entre computadores locais e remotos.

arquivo scp.txt usuário@IP:/caminho/destino/

Ou vice-versa, baixe do servidor remoto:

scp usuário@IP:/caminho/arquivo.txt ./

Comandos úteis do PowerShell-Linux e equivalentes

  • ls / dir: Exibe o conteúdo de um diretório
  • CD: Alterar diretório no servidor remoto
  • rm / Remover-Item: Excluir arquivos ou pastas
  • mv / Mover-Item: Mover ou renomear arquivos
  • toque / Novo-Item: Criar arquivos
  • usuário adicionar: Adicionar usuários (no Linux)
  • scp: Copiar arquivos entre computadores

Gerenciamento de chaves SSH para autenticação avançada

Usar uma senha é bom para começar, mas o mais seguro e prático é autenticação baseada em chave pública:

    1. Gerar uma chave SSH:
      ssh-keygen
    2. Adicione a chave pública ao servidor remoto: Copie o conteúdo de id_rsa.pub (Linux) ou o arquivo gerado em Windows para ~/.ssh/authorized_keys no servidor de destino.
    3. Opcionalmente, use ssh-agent para gerenciar várias chaves:
ssh-add caminho_da_chave_privada

Dessa forma, você só precisará digitar a chave na primeira vez, ou não precisará digitar, se o ssh-agent estiver configurado corretamente.

Limitações e considerações importantes

  • O comando sudo Não está disponível diretamente em sessões remotas PowerShell-SSH no Linux. Para executar comandos privilegiados, você precisará encontrar alternativas ou métodos específicos.
  • Os perfis do PowerShell ($PROFILE) não são carregados automaticamente durante sessões SSH. Se precisar usar um, você precisará carregá-lo manualmente após iniciar a sessão remota.
  • Limitações entre plataformas: Alguns recursos avançados (como gerenciamento de endpoint ou JEA) são suportados apenas pelo WinRM, embora suporte adicional via SSH seja esperado no futuro.
  • Segundo salto de sessões remotas: Antes do PowerShell 7.1, não era possível criar uma segunda sessão remota a partir de uma já ativa usando SSH, mas a partir dessa versão, agora é possível, embora com certas restrições.

Uso especializado: switches, dispositivos de rede e APIs REST

O PowerShell pode se conectar via SSH a dispositivos de rede, como switches, para executar comandos, embora isso dependa dos recursos do firmware e do suporte ao protocolo SSH. Para tarefas mais avançadas, alguns fabricantes de hardware oferecem APIs REST que também podem ser gerenciadas pelo PowerShell.

Em muitos casos, O método direto com SSH é a opção mais universal, simples e compatível para operações básicas no computador remoto.

Alternativas ao OpenSSH? PuTTY e outros clientes

Embora o OpenSSH agora venha integrado ao Windows, ferramentas como PuTTY ainda são opções válidas, especialmente se você precisa de uma interface gráfica ou para gerenciar conexões salvas com diferentes configurações e chaves. No entanto, a integração direta com o PowerShell e scripts torna o OpenSSH a opção preferida para a maioria dos usuários e tarefas de automação.

E se eu trabalhar com o GitHub ou plataformas similares?

Configurar chaves SSH no PowerShell é essencial se você usa plataformas como GitHubO procedimento consiste em gerar a chave, adicioná-la ao agente e copiar a chave pública para as configurações do seu perfil do GitHub. Feito isso, você poderá trabalhar com seus repositórios com segurança sem precisar digitar a senha todas as vezes.

Dominar o SSH no PowerShell abre um mundo de possibilidades para gerenciar e automatizar tarefas, se você gerencia servidores Windows, Linux ou dispositivos de redeGraças à integração nativa do OpenSSH e ao poder dos cmdlets do PowerShell, controlar sistemas remotos é questão de minutos. Da instalação e configuração inicial às transferências de arquivos e execução de comandos complexos, qualquer usuário pode transformar seu PC em um verdadeiro centro de operações multiplataforma, seguro e versátil.

WSL 2 (Windows Subsistema para Linux 2): Tudo sobre o Subsistema para Linux Windows para Linux, vantagens e como tirar proveito disso

Deixe um comentário