Paramiko est connecté à un serveur Linux. Si vous souhaitez vous connecter à Windows à distance, vous devez utiliser winrm. Le
service winRM est un service de gestion à distance PowerShell sous Windows Server.
Le script Python gère la ligne de commande Windows en connectant le module winRM.
Vérifiez l'état du service winrm, il n'est pas démarré par défaut
winrm enumerate winrm/config/listener
démarrage du service winrm
winrm quickconfig
Erreur:
PS C:\Windows\system32> winrm quickconfig
在此计算机上,WinRM 未设置为接收请求。
必须进行以下更改:
启动 WinRM 服务。
将 WinRM 服务类型设置为延迟的自动启动。
执行这些更改吗[y/n]? y
WinRM 已更新为接收请求。
成功更改 WinRM 服务类型。
已启动 WinRM 服务。
WSManFault
Message
ProviderFault
WSManFault
Message = 由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。
错误编号: -2144108183 0x80338169
由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。
Ouvrez les paramètres réseau et Internet:
Modifiez les propriétés de connexion en privé:
Exécutez à nouveau l'erreur:
PS C:\Windows\system32> winrm quickconfig
已在此计算机上运行 WinRM 服务。
WinRM 没有设置成为了管理此计算机而允许对其进行远程访问。
必须进行以下更改:
启用 WinRM 防火墙异常。
配置 LocalAccountTokenFilterPolicy 以远程向本地用户授予管理权限。
Activez le pare-feu:
netsh advfirewall firewall set rule group="Windows 远程管理" new enable=yes
Opération réussie:
已更新 3 规则。
确定。
Recommencer:
C:\Windows\system32> winrm quickconfig
已在此计算机上运行 WinRM 服务。
在此计算机上设置了 WinRM 以进行远程管理。
Vue:
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
Configurer l'authentification pour le service winrm
winrm set winrm/config/service/auth '@{Basic="true"}'
Auth
Basic = true
Kerberos = true
Negotiate = true
Certificate = false
CredSSP = false
CbtHardeningLevel = Relaxed```
Configurez la méthode de cryptage pour le service winrm pour autoriser le non-cryptage
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
Remarque:
1. Vous devez configurer à la fois l'extrémité de contrôle et l'extrémité contrôlée avant de pouvoir utiliser winrm pour vous connecter à distance.
2. Il n'est utilisé que pour le réseau local et les deux ordinateurs doivent pouvoir envoyer un ping.
3. Vous devez utiliser le administrateur pour ouvrir la ligne de commande, sinon il y aura des autorisations insuffisantes Cause une erreur
Je n’ai pas utilisé les commandes suivantes et vous pouvez les utiliser si vous en avez besoin:
1. Capable d’obtenir des instances à un taux pouvant atteindre 50 instances par groupe
winrm set winrm/config @{
MaxBatchItems="50"}
2. En augmentant la taille de paquet maximale allouée et les paramètres de délai d'expiration, les performances peuvent également être améliorées
winrm set winrm/config @{
MaxEnvelopeSizekb="150"}
winrm set winrm/config @{
MaxTimeoutms ="60000"}
3. Pour obtenir les paramètres de configuration actuels de WinRM, exécutez la commande suivante
winrm g winrm/config
4. Par défaut, l'ordinateur client requiert le chiffrement du trafic réseau. Pour permettre aux ordinateurs clients de demander du trafic non chiffré, exécutez la commande suivante
winrm s winrm/config/Client @{
AllowUnencrypted="true"}
TrustedHosts 是一个数组,用于指定可信的远程计算机的列表。同一工作组中的其他计算机或不同域中的计算机均应添加到此列表中。TrustedHosts 列表中的计算机未经过身份验证。
5. Exécutez la commande suivante pour inclure tous les ordinateurs dans TrustedHosts
winrm s winrm/config/Client @{
TrustedHosts="*"}
6. L'authentification de base est un schéma dans lequel le nom d'utilisateur et le mot de passe sont envoyés au serveur ou à l'agent en texte clair. C'est la méthode d'authentification la moins sécurisée. La valeur par défaut est True.
Exécutez la commande suivante pour configurer l'ordinateur client afin qu'il utilise l'authentification de base
winrm s winrm/config/Client/Auth @{
Basic="true"}