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.
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.
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
>
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.
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.
Como mencionado anteriormente, você pode usar os mesmos comandos que você está familiarizado com New-PSSession, Enter-PSSession ou Invoke-Command.
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