Paramiko está conectado a un servidor Linux. Si desea conectarse a Windows de forma remota, debe usar winrm. El
servicio winRM es un servicio de administración remota de PowerShell en el servidor Windows.
El script de Python opera la línea de comandos de Windows conectando el módulo winRM.
Verifique el estado del servicio winrm, no se inicia de forma predeterminada
winrm enumerate winrm/config/listener
inicio del servicio winrm
winrm quickconfig
Error:
PS C:\Windows\system32> winrm quickconfig
在此计算机上,WinRM 未设置为接收请求。
必须进行以下更改:
启动 WinRM 服务。
将 WinRM 服务类型设置为延迟的自动启动。
执行这些更改吗[y/n]? y
WinRM 已更新为接收请求。
成功更改 WinRM 服务类型。
已启动 WinRM 服务。
WSManFault
Message
ProviderFault
WSManFault
Message = 由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。
错误编号: -2144108183 0x80338169
由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。
Abra la configuración de red e Internet:
Cambie las propiedades de la conexión a privada:
Ejecute el error nuevamente:
PS C:\Windows\system32> winrm quickconfig
已在此计算机上运行 WinRM 服务。
WinRM 没有设置成为了管理此计算机而允许对其进行远程访问。
必须进行以下更改:
启用 WinRM 防火墙异常。
配置 LocalAccountTokenFilterPolicy 以远程向本地用户授予管理权限。
Encienda el firewall:
netsh advfirewall firewall set rule group="Windows 远程管理" new enable=yes
Operación exitosa:
已更新 3 规则。
确定。
Empezar de nuevo:
C:\Windows\system32> winrm quickconfig
已在此计算机上运行 WinRM 服务。
在此计算机上设置了 WinRM 以进行远程管理。
Vista:
PS C:\Windows\system32> winrm enumerate winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 127.0.0.1, 192.168.64.84, ::1
Configurar la autenticación para el servicio winrm
winrm set winrm/config/service/auth '@{Basic="true"}'
Auth
Basic = true
Kerberos = true
Negotiate = true
Certificate = false
CredSSP = false
CbtHardeningLevel = Relaxed```
Configure el método de encriptación para el servicio winrm para permitir la no encriptación
winrm set winrm/config/service @{AllowUnencrypted="true"}
PS C:\Windows\system32> winrm set winrm/config/service '@{AllowUnencrypted="true"}'
Service
RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
MaxConcurrentOperations = 4294967295
MaxConcurrentOperationsPerUser = 1500
EnumerationTimeoutms = 240000
MaxConnections = 300
MaxPacketRetrievalTimeSeconds = 120
AllowUnencrypted = true
Auth
Basic = true
Kerberos = true
Negotiate = true
Certificate = false
CredSSP = false
CbtHardeningLevel = Relaxed
DefaultPorts
HTTP = 5985
HTTPS = 5986
IPv4Filter = *
IPv6Filter = *
EnableCompatibilityHttpListener = false
EnableCompatibilityHttpsListener = false
CertificateThumbprint
AllowRemoteAccess = true
Nota:
1. Debe configurar tanto el extremo de control como el extremo controlado antes de poder usar winrm para conectarse de forma remota.
2. Solo se usa para LAN, y las dos computadoras deben poder hacer ping.
3. Debe usar el administrador para abrir la línea de comando, de lo contrario no habrá permisos suficientes Causa un error
No utilicé los siguientes comandos y puedes tomarlos si los necesitas:
1. Capaz de obtener instancias a una tasa de hasta 50 instancias por grupo.
winrm set winrm/config @{
MaxBatchItems="50"}
2. Al aumentar el tamaño máximo de paquete asignado y la configuración de tiempo de espera, el rendimiento también se puede mejorar
winrm set winrm/config @{
MaxEnvelopeSizekb="150"}
winrm set winrm/config @{
MaxTimeoutms ="60000"}
3. Para obtener la configuración actual de WinRM, ejecute el siguiente comando
winrm g winrm/config
4. De forma predeterminada, el equipo cliente requiere el cifrado del tráfico de red. Para permitir que los equipos cliente soliciten tráfico no cifrado, ejecute el siguiente comando
winrm s winrm/config/Client @{
AllowUnencrypted="true"}
TrustedHosts 是一个数组,用于指定可信的远程计算机的列表。同一工作组中的其他计算机或不同域中的计算机均应添加到此列表中。TrustedHosts 列表中的计算机未经过身份验证。
5. Ejecute el siguiente comando para incluir todas las computadoras en TrustedHosts
winrm s winrm/config/Client @{
TrustedHosts="*"}
6. La autenticación básica es un esquema en el que el nombre de usuario y la contraseña se envían al servidor o agente en texto sin cifrar. Este es el método de autenticación menos seguro. El valor por defecto es verdadero.
Ejecute el siguiente comando para configurar la computadora cliente para usar la autenticación básica
winrm s winrm/config/Client/Auth @{
Basic="true"}