Yo soy incapaz de WinRM sesión en una secuencia de comandos de python.

Entorno

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)

Configuraciones

He habilitado WinRM en Windows 10 y 2012 server a través de ConfigureRemotingForAnsible.ps1 script de PowerShell. Estos son los WinRM configuraciones.

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> 

He preparado CentOS cuadro de la siguiente

# 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 [email protected].COM:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected].COM
Valid starting       Expires              Service principal
2016-06-30T02:15:20  2016-06-30T12:15:20  krbtgt/TEST.[email protected].COM
renew until 2016-07-01T02:15:16
#

Problema

Hasta ahora, todo parece suave. El problema se produce cuando trato de usar este vale de kerberos para autenticar a los servidores de Windows con el siguiente script.

#!/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
#

Seguro que no, ¿por qué me aparece este error mientras Event Logs en Windows server muestra el éxito. Al parecer, veo tres Logon y Logoff que ocurren al mismo tiempo.
WinRM - las credenciales especificadas fueron rechazados por el servidor

No está seguro de lo que me estoy perdiendo aquí. Firewall se detiene o deshabilita en ambos CentOS & máquinas Windows y a veces también en la sincronización.

InformationsquelleAutor vikas027 | 2016-06-29

2 Comentarios

  1. 6

    Resuelto por último, era un problema de permisos y no las credenciales no son válidas como se señaló en los registros. Hay dos soluciones a este problema

    1. Agregar el usuario de dominio para la Domain Admins Grupo
    2. Ejecutar winrm configSDDL default en el servidor de Windows y comprobar Read y Execute permissons como el de abajo,

    WinRM - las credenciales especificadas fueron rechazados por el servidor

    • ¿qué pasa si no tengo acceso a el cambio de grupo/nombre de usuario? todos los que tengo el único SOME_GROUP\Administrator usuario. Puede que el usuario de este usuario a ejecutar?
    • Hola vikas027 , ¿por qué es el administrador de dominio de grupo se requiere? Estoy frente al mismo problema, va a tener un problema de conseguir en ese grupo, ¿hay alguna solución?
  2. 1

    Si está utilizando la autenticación Básica Local, es decir, nombres de usuario , entonces usted necesita para establecer como una Verdad mediante los siguientes comandos en Powershell (Como admin)

    winrm set winrm/config/client/auth '@{Basic="true"}'
    winrm set winrm/config/service/auth '@{Basic="true"}'

Dejar respuesta

Please enter your comment!
Please enter your name here