将 ssh 连接到域上的用户帐户?

connect ssh to user account on domain?

我正在尝试使用 Paramiko 通过 SSH 连接到 windows 服务器。服务器上有两个帐户:

管理员

administrator.DOMAIN

'administrator' 帐户是本地帐户,'administrator.DOMAIN' 是域上的网络帐户。

有趣的是,Paramiko 似乎不想连接到域帐户。

例如 - 这适用于 Powershell(通过 domian):

> ssh DOMAIN\administrator@MYHOST 
> DOMAIN\administrator@HOST's password: myPassword

这在 Powershell 中有效(无域 - 登录本地帐户):

> ssh administrator@MYHOST myPassword
> administrator@HOST's password: myPassword

这适用于 Python Paramiko(无域 - 登录本地帐户):

    >client = paramiko.SSHClient()
    >client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    >client.connect(hostname='MYHOST', username='administrator', password='myPassword')

This **does not** work in Python Paramiko (passing the domain):

    >client = paramiko.SSHClient()   >client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    >client.connect(hostname='MYHOST',  username='DOMAIN\administrator', password='myPassword')

有人知道让 Paramiko 接受用户名参数中的域的方法吗?以下是我收到的错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\client.py", line 437, in connect
    passphrase,
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\client.py", line 749, in _auth
    raise saved_exception
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\client.py", line 736, in _auth
    self._transport.auth_password(username, password)
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\transport.py", line 1436, in auth_password
    return self.auth_handler.wait_for_response(my_event)
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\auth_handler.py", line 250, in wait_for_response
    raise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.
Socket exception: An existing connection was forcibly closed by the remote host (10054)
>>> client.connect(hostname='HOST', username='DOMAIN\administrator', password='myPassword')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\client.py", line 437, in connect
    passphrase,
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\client.py", line 749, in _auth
    raise saved_exception
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\client.py", line 736, in _auth
    self._transport.auth_password(username, password)
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\transport.py", line 1436, in auth_password
    return self.auth_handler.wait_for_response(my_event)
  File "C:\Users\jmarshall\Desktop\ETL\ETLApp\ETLAppEnv_3_7\lib\site-packages\paramiko\auth_handler.py", line 250, in wait_for_response
    raise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.

我无法在 windows 上测试这个,但是 username='DOMAIN\administrator',你应该试试 username='administrator@DOMAIN'