WinRM - les informations d'identification spécifiées ont été rejetées par le serveur
Je n'arrive pas à obtenir WinRM session dans un script python.
Environnement
ad-dns.test.com - Windows 2012 AD and DNS Server
box88.test.com - CentOS 7.2 : Kerberos, Python (Not joined to domain)
box62.test.com - Windows 2012 R2 Standard (Joined to domain)
box63.test.com - Windows 10 (Joined to domain)
Configurations
J'ai activé WinRM sur Windows 10 et 2012 serveur par le biais de ConfigureRemotingForAnsible.ps1 script PowerShell. Ce sont les WinRM configurations.
PS C:\Windows\system32> winrm get winrm/config
Config
MaxEnvelopeSizekb = 500
MaxTimeoutms = 60000
MaxBatchItems = 32000
MaxProviderRequests = 4294967295
Client
NetworkDelayms = 5000
URLPrefix = wsman
AllowUnencrypted = false
Auth
Basic = true
Digest = true
Kerberos = true
Negotiate = true
Certificate = true
CredSSP = false
DefaultPorts
HTTP = 5985
HTTPS = 5986
TrustedHosts = *
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 = false
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
Winrs
AllowRemoteShellAccess = true
IdleTimeout = 7200000
MaxConcurrentUsers = 10
MaxShellRunTime = 2147483647
MaxProcessesPerShell = 25
MaxMemoryPerShellMB = 1024
MaxShellsPerUser = 30
PS C:\Windows\system32>
J'ai préparé CentOS encadré ci-dessous
# yum -y install python-pip python-devel krb5-devel krb5-libs krb5-workstation
# pip install --upgrade pip
# pip install "pywinrm>=0.1.1" kerberos pykerberos requests-kerberos isodate xmltodict
# cat /etc/krb5.conf
[libdefaults]
default_realm = TEST.COM
[realms]
TEST.COM = {
kdc = ad-dns.test.com
admin_server = ad-dns.test.com
kpasswd_server = ad-dns.test.com
default_domain = test.com
}
[domain_realm]
.test.com = TEST.COM
test.com = TEST.COM
#
# kinit [email protected]
Password for vkumar@TEST.COM:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: vkumar@TEST.COM
Valid starting Expires Service principal
2016-06-30T02:15:20 2016-06-30T12:15:20 krbtgt/TEST.COM@TEST.COM
renew until 2016-07-01T02:15:16
#
Problème
Jusqu'à présent, tout semble lisse. Le problème survient lorsque j'essaie d'utiliser ce ticket kerberos pour authentifier les serveurs Windows en utilisant le script ci-dessous.
#!/usr/bin/env python
import winrm
s = winrm.Session('box63.test.com', auth=('[email protected]', 'IamUsingKerbTicket'), transport='kerberos')
r = s.run_cmd('ipconfig', ['/all'])
print r.status_code
print r.std_out
print r.std_err
# ./winrm_ipconfig.py
Traceback (most recent call last):
File "./winrm_ipconfig.py", line 6, in <module>
r = s.run_cmd('ipconfig', ['/all'])
File "/usr/lib/python2.7/site-packages/winrm/__init__.py", line 37, in run_cmd
shell_id = self.protocol.open_shell()
File "/usr/lib/python2.7/site-packages/winrm/protocol.py", line 132, in open_shell
res = self.send_message(xmltodict.unparse(req))
File "/usr/lib/python2.7/site-packages/winrm/protocol.py", line 207, in send_message
return self.transport.send_message(message)
File "/usr/lib/python2.7/site-packages/winrm/transport.py", line 179, in send_message
raise InvalidCredentialsError("the specified credentials were rejected by the server")
winrm.exceptions.InvalidCredentialsError: the specified credentials were rejected by the server
#
Pas sûr, pourquoi je vois cette erreur lors de la Event Logs
sur Windows server succès. Apparemment, je vois trois Logon
et Logoff
se produisent en même temps.
Pas sûr de ce que je suis absent ici. Pare-feu est arrêté ou désactivé sur les deux CentOS & machines Windows et le temps sont également synchronisés.
OriginalL'auteur vikas027 | 2016-06-29
Vous devez vous connecter pour publier un commentaire.
Résolu enfin, c'était un problème de permission et pas d'informations d'identification non valides comme l'a souligné dans les journaux. Il y a deux solutions à ce problème
Domain Admins
Groupewinrm configSDDL default
sur le serveur Windows et vérifiezRead
etExecute
autorisations comme ci-dessousSOME_GROUP\Administrator
de l'utilisateur. Puis-je de l'utilisateur, cet utilisateur à exécuter?Salut vikas027 , pourquoi l'admin de domaine groupe? Je suis confronté à la même question, va avoir un problème sur ce groupe, il n'existe aucune solution de contournement?
OriginalL'auteur vikas027
Si vous utilisez l'authentification de Base à l'échelle Locale les noms d'utilisateur , vous devez le définir comme Vrai en utilisant les commandes suivantes en Powershell (en tant Qu'administrateur)
OriginalL'auteur Ubuntuser