Powershell – Habilitando conexão remota

Uma das tendências que veio para ficar é o Powershell da Microsoft! A cada versão do Windows a Microsoft aprimora mais e mais está ferramenta, fazendo com que seja possível fazermos as mesmas coisas tanto em linha de comando quanto via interface gráfica! Para alguns, talvez isso não faça muito sentido porém, quando você começa a gerenciar muitos servidores, é extremamente necessário otimizarmos nosso tempo e esforço a fim de não perdermos muito tempo com tarefas repetitivas!

Como forma de aprimorar minhas habilidades com o PowerShell, estou me desafiando a fazer a maior quantidade possível de tarefas através dele!! Tarefas básicas como: criar usuários/grupos, resetar senha de usuários, alterar grupo, checar logs, dentre outras coisas que um administrador de sistemas precisa fazer!

E a dica que pretendo dar hoje é justamente para as pessoas que estão querendo iniciar suas tarefas junto ao PowerShell.

OBJETIVO:

Gerenciar remotamente qualquer servidor, independente da minha máquina cliente estar em um ambiente de domínio ou não.

CENÁRIO:

Para atingirmos este objetivo, contaremos com o seguinte cenário:

  • Ambiente com Active Directory instalado, com várias versões do Windows Server (2008, 2008 R2 e 2012 R2);
  • Notebook com Windows 10 HOME, que não faz parte do Active Directory!

PRÁTICA:

  • Para iniciar nossos testes, iremos abrir o Windows Powershell.
Abrindo Powershell
Abrindo Powershell
  • Agora tentaremos efetuar uma conexão remota usando o cmdlet Enter-PSSession:
Ingressando em uma máquina remota
Ingressando em uma máquina remota

Explicação:

  1. Enter-PSSession: Cmdlet para iniciar uma conexão interativa com um computador remoto;
  2. -ComputerName IP/NOME: Especifica o nome ou endereço IP da máquina que estamos efetuando conexão;
  3. -Credential USUÁRIO: Usuário que será utilizado para efetuar está conexão
  • Será retornando o seguinte erro:
Erro ao tentar conectar remotamente em uma máquina
Erro ao tentar conectar remotamente em uma máquina

O erro mostrado é:

“Enter-PSSession : Falha ao conectar ao servidor remoto 192.168.88.1 com a seguinte mensagem de erro: O cliente WinRM não pode processar a solicitação. Se o esquema de autenticação for diferente de Kerberos ou se o computador cliente não tiver ingressado em um domínio, o transporte HTTPS deverá ser usado ou o computador de destino deverá ser adicionado à opção de configuração TrustedHosts. Use winrm.cmd para configurar TrustedHosts. Observe que os computadores na lista TrustedHosts podem não ser autenticados. Você pode obter mais informações sobre isso executando o seguinte comando: winrm help config. Para obter mais informações, consulte o tópico da Ajuda about_Remote_Troubleshooting.”

Vejam como é importante prestarmos atenção a todos os erros que nos é informado! Sempre! Neste caso, o erro é porque a nossa máquina destino não confia em nossa máquina cliente (Não está na lista de TrustedHosts).

Para corrigir tal problema, precisarmos executar o cmdlet Enable-PSRemoting junto ao servidor:

Enable-PSRemoting -Force
Enable-PSRemoting -Force

Explicação: O comando Enable-PSRemoting -Force além de habilita o WinRM também criar regras de exceção junto ao firewall para permitir o acesso remoto.

Atenção: É necessário executar esse comando usando o Powershell elevado (Como administrador).

Lembram no início do post onde disse que estarei usando uma máquina em standalone (Que não faz parte do domínio)? Caso está também seja sua a situação, ainda teremos alguns comandos pela frente! Caso contrário, nossa configuração está terminada e já podemos efetuar a conexão remota para o servidor!

CONFIGURANDO O TRUSTEDHOSTS:

Como ambas as máquinas não se conhecem, precisamos fazer com que nosso servidor confie em nossa máquina cliente!

Para isso, teremos que adicionar o IP do nosso equipamento na lista de hosts confiáveis:

Setando Trustedhosts
Setando Trustedhosts

Explicação:

  1. O cmdlet Set-Item WSMan:\localhost\client\TrustedHosts * faz com que o servidor aceite a conexão de qualquer origem! Não restrição alguma do cliente que estará efetuando a conexão! Nossa única segurança, é a credencial exigida para conexão! Por questões de segurança, seria recomendável substituir o asterisco pelo IP da(s) máquina(s) cliente.

Também é necessário executarmos o mesmo comando em nossa máquina cliente! Lembrem-se que está configuração não é bidirecional! É necessário fazer com que ambas as máquinas se conheçam e confiem em si mesmas.

REINICIANDO O SERVIÇO:

Devido a alteração das configurações dos hosts confiáveis que fizemos, temos que reiniciar o serviço do WinRM:

Reiniciando o WinRM
Reiniciando o WinRM

EFETUANDO UMA CONEXÃO REMOTA:

Como resultando das nossas configurações, podemos finalmente efetuar uma conexão remota junto ao nosso servidor usando:

Utilizando o Enter-PSSession
Utilizando o Enter-PSSession

Pronto! Nossa configuração está completa!

Além do Enter-PSSession, também podemos utilizar outros cmdlets para efetuar comandos remotos, como o Invoke-Command!

Espero que tenham gostado de mais essa dica!!! Qualquer dúvida, não deixem de entrar em contato!

Você talvez também goste