Setup PowerShell SSH Remoting no PowerShell 6

Com a versão 6 do PowerShell, a Microsoft introduziu o PowerShell Remoting sobre SSH, que permite o verdadeiro remoto PowerShell multiplataforma entre Linux, macOS e Windows. O PowerShell SSH Remoting cria um processo de host PowerShell na máquina alvo como um subsistema SSH. Normalmente, o PowerShell remoting utiliza o WinRM para negociação de conexão e transporte de dados, no entanto o WinRM só está disponível em máquinas baseadas em Windows.

Há também algumas desvantagens. O remoting baseado em SSH não suporta atualmente a configuração de endpoints remotos e JEA (Just Enough Administration). É também importante compreender, que este não é apenas mais um cliente SSH PowerShell.

Utilizar o transporte SSH com o PowerShell Remoting

Para usar o remoto PowerShell com o SSH pode usar os mesmos cmdlets, sabe pelo remoto PowerShell com o WinRM.

  • New-PSSession
  • Enter-PSSession
  • Invoke-Command

Existem 3 novos parâmetros para estes cmdlets, se estiver a usar o controlo remoto PowerShell SSH.

  • -HostName (Em vez de -Nome do computador, você define o alvo SSH)
  • -UserName (Ao invés de -Credentials você usa o parâmetro -UserName)
  • -KeyFilePath (Se você estiver usando autenticação de chave SSH você pode usar o parâmetro -Parâmetro do KeyFilePath para apontar para o ficheiro-chave)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

>

Configuração do PowerShell SSH Comando

Para trabalhar com o PowerShell SSH, você precisará completar os seguintes passos em todos os sistemas e máquinas.

  • Instalar OpenSSH Server and Client
    • OpenSSH for Windows está disponível diretamente no Windows 10 (1809) e Windows Server 2019 como um recurso opcional.
    • No Linux você instala o OpenSSH dependendo da sua plataforma
  • Instalar o PowerShell 6 em todos os sistemas
  • Configurar o subsistema SSH para hospedar um processo PowerShell na máquina remota
  • Configurar senha ou autenticação baseada em chaves

Configurar passo a passo o SSH remotamente no Windows

Passo 1: Primeiro você precisa instalar o PowerShell 6 no Windows. Você pode seguir o post do meu blog para instalar facilmente o PowerShell 6.

Instalar o PowerShell 6

Passo 2: Instale o OpenSSH Client e Abra o SSH Server. Para instalar cliente e servidor e configurar inicialmente o OpenSSH server, você pode usar o seguinte comando.

 # Install the OpenSSH Client and Server Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Initial Configuration of SSH Server Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # Confirm the Firewall rule is configured. It should be created automatically by setup. Get-NetFirewallRule -Name *ssh* # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled

>

Passo 2.1: Uma vez que atualmente há um bug no OpenSSH para Windows, o caminho não aceita espaços. Você precisa criar um link simbólico para um diretório sem espaços. Execute o seguinte comando no sistema alvo.

 mklink /D c:\pwsh "C:\Program Files\PowerShell"

Passo 3: Configure e edite o arquivo sshd_config localizado em $env:ProgramData\ssh na máquina alvo.

Editar sshd_config

Verifica se a autenticação por senha está ativada

PasswordAuthentication yes

Adicionar o Subsistema para PowerShell

Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

Ativar autenticação por chave opcional

PubkeyAuthentication yes

Se você estiver interessado em configurar a autenticação baseada em chave com OpenSSH no Windows Server, confira o post do blog no ITOpstalk.com de Orin Thomas (Microsoft Cloud Advocate).

Passo 4: Reinicie o serviço sshd

>

3812>

 Restart-Service sshd

>

Passo a passo Configurar o SSH remotamente no Linux (Ubuntu 18.04)

Passo 1: Primeiro você precisa instalar o PowerShell 6 no Linux. Você pode seguir o post do meu blog para instalar facilmente o PowerShell 6.

Instalar o PowerShell 6 Linux

Passo 2: Instale o OpenSSH Client e Abra o SSH Server. Para instalar cliente e servidor e configurar inicialmente o servidor OpenSSH, você pode usar os seguintes comandos.

sudo apt install openssh-clientsudo apt install openssh-server

Step 3: Configure e edite o arquivo sshd_config no local /etc/ssh na máquina alvo.

Verifica se a autenticação de senha está ativada

PasswordAuthentication yes

Adicionar o Subsistema para PowerShell

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Ativar autenticação da chave opcional

PubkeyAuthentication yes

Passo 4: Reinicie o serviço sshd

>

 sudo service sshd restart

>

SSH Comando com PowerShell 6

>

Agora pode começar a usar o comando PowerShell SSH para se ligar mesmo a partir de diferentes sistemas operativos como Windows para Linux ou Linux para Windows. PowerShell 6 SSH Remoting

Como mencionado anteriormente, você pode usar os mesmos comandos que você está familiarizado com New-PSSession, Enter-PSSession ou Invoke-Command.

PowerShell SSH Remoting Linux to Windows

Como cliente você também pode usar o Azure Cloud Shell, que executa PowerShell 6

Obviamente, você também pode usar o PowerShell SSH remoting para se conectar do Linux ao Linux e do Windows ao Windows. Você pode encontrar mais informações sobre o controle remoto do PowerShell SSH nas páginas do Microsoft Docs. Se você tiver alguma dúvida, por favor me avise nos comentários.

Tags: Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell sobre SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Last modified: 4 de abril de 2019

Deixe uma resposta

O seu endereço de email não será publicado.