script - session specific commands in powershell
Powershell remoto con dirección IP como destino (4)
Logré habilitar PSRemoting en mi servidor 2008 R2. Puedo hacer una sesión remota desde la misma red usando el nombre de host como destino.
Estoy fallando cuando trato de usar la dirección IP como destino desde cualquier computadora (dentro de la red o desde otra red (por ejemplo, a través de VPN)). Quiero poder usar la comunicación remota a través de mi conexión VPN donde tengo que usar la dirección IP ya que el nombre de host no se puede resolver.
No deseo agregar nombres en mi archivo de hosts porque hay algunos otros servidores en nuestros clientes que tienen el mismo nombre DNS y no quiero eliminar e insertar el nombre-dirección-IP-asociación de nuevo y otra vez.
Espero que alguien pueda decirme cómo permitir que se llame al objetivo psremoting por IP.
Editar : para ser más específico, quiero poder ejecutar esto:
Enter-PSSession -Computername 192.168.123.123 -credentials $cred
Pero solo puedo ejecutar ese comando si paso un nombre de host a " -Computername
"
Edit2 :
Recibo los siguientes mensajes de error cuando intento iniciar sesión utilizando la dirección IP en lugar del nombre de host (desde la red interna):
Enter-PSSession : Connecting to remote server failed with the following error message : The WinRM client cannot process
the request. Default authentication may be used with an IP address under the following conditions: the transport is HT
TPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure T
rustedHosts. Note that computers in the TrustedHosts list might not be authenticated. For more information on how to se
t TrustedHosts run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting
Help topic.
Edit3:
Sé sobre la configuración de hosts de confianza de WSMan, pero ese no parece ser el problema. Ya está configurado a "*" (lo hice justo después de habilitar la comunicación remota), pero todavía no puedo conectarme a ese servidor usando la dirección IP como nombre de equipo de destino, pero puedo conectarme usando el nombre de host como nombre de equipo de destino. . Parece que hay algo así como el enlace en IIS que impide que el oyente escuche las solicitudes que se dirigen al número de IP en lugar del nombre de host. Pero IIS no está instalado. No sé dónde buscar ese entorno.
Actualización 2011-07-12:
De acuerdo, creo que la configuración de hosts de confianza no es el problema porque PUEDO conectarme desde nuestro DC a través del nombre de host, pero no si utilizo la dirección de IP del destino para el parámetro de computadora.
Creo que el problema debe ser el oyente. Tal vez el oyente no acepte solicitudes dirigidas a la IP de destino en lugar del nombre de host de destino. Pero no sé cómo cambiar eso.
El mensaje de error te brinda la mayor parte de lo que necesitas. Esto no se trata solo de la lista TrustedHosts; significa que para utilizar una dirección IP con el esquema de autenticación predeterminado, también debe estar utilizando HTTPS (que no está configurado de manera predeterminada) y proporcionar credenciales explícitas. Puedo decir que al menos no está usando SSL porque no usó el modificador -UseSSL.
Tenga en cuenta que SSL / HTTPS no está configurado de manera predeterminada; es un paso adicional que tendrá que realizar. No puede simplemente agregar -UseSSL.
El mecanismo de autenticación predeterminado es Kerberos, y quiere ver los nombres de host reales tal como aparecen en AD. No direcciones IP, no apodos DNS CNAME. Algunas personas habilitarán la autenticación básica, que es menos quisquillosa, pero también debes configurar HTTPS ya que de lo contrario pasarías las credenciales en texto sin formato. Enable-PSRemoting solo configura HTTP.
Agregar nombres a su archivo de hosts no funcionará. Esto no es un problema de resolución de nombres; se trata de cómo se lleva a cabo la autenticación mutua entre computadoras.
Además, si las dos computadoras involucradas en esta conexión no están en el mismo dominio AD, el mecanismo de autenticación predeterminado no funcionará. Lea "help about_remote_troubleshooting" para obtener información sobre la configuración de autenticación de dominio no entre dominios.
De los documentos en http://technet.microsoft.com/en-us/library/dd347642.aspx
HOW TO USE AN IP ADDRESS IN A REMOTE COMMAND
-----------------------------------------------------
ERROR: The WinRM client cannot process the request. If the
authentication scheme is different from Kerberos, or if the client
computer is not joined to a domain, then HTTPS transport must be used
or the destination machine must be added to the TrustedHosts
configuration setting.
The ComputerName parameters of the New-PSSession, Enter-PSSession and
Invoke-Command cmdlets accept an IP address as a valid value. However,
because Kerberos authentication does not support IP addresses, NTLM
authentication is used by default whenever you specify an IP address.
When using NTLM authentication, the following procedure is required
for remoting.
1. Configure the computer for HTTPS transport or add the IP addresses
of the remote computers to the TrustedHosts list on the local
computer.
For instructions, see "How to Add a Computer to the TrustedHosts
List" below.
2. Use the Credential parameter in all remote commands.
This is required even when you are submitting the credentials
of the current user.
Intenta hacer esto:
Set-Item WSMan:/localhost/Client/TrustedHosts -Value "*" -Force
Los chicos han dado la solución simple, que será si tuvieras que echarle un vistazo a la ayuda, está bien, parece mucho de una vez pero en realidad es rápida de leer:
get-help about_Remote_Troubleshooting | more
Pongo a prueba su afirmación en mi infraestructura, la dirección IP no es el problema, el siguiente funciona para mí:
PS C:/Users/JPB> hostname
JPBCOMPUTER
PS C:/Users/JPB> Enter-PSSession -ComputerName 192.168.183.100 -Credential $cred
[192.168.183.100]: PS C:/Users/jpb/Documents>
[192.168.183.100]: PS C:/Users/jpb/Documents> hostname
WM2008R2ENT
Si intenta trabajar a través de una VPN, será mejor que eche un vistazo a la configuración del firewall en el camino hacia su servidor. La instalación y la configuración de Windows Remote Management pueden ayudarlo. El puerto TCP en el que WinRM está esperando es:
WinRM 1.1 y versiones anteriores: el puerto HTTP predeterminado es 80.
WinRM 2.0: el puerto HTTP predeterminado es 5985.
Editado: según su error, puede probar esto en su computadora del cliente:
Set-Item WSMan:/localhost/Client/TrustedHosts *