paramiko: NameError: global name 'descriptor' is not defined
paramiko: NameError: global name 'descriptor' is not defined
我正在尝试使用 paramiko
进行 SSH,但出现错误:
>>> import paramiko
>>> ssh = paramiko.SSHClient()
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect('54.***.***.110', key_filename='D:\Keys\MyOWN\priv.ppk')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win32\egg\paramiko\client.py", line 366, in connect
File "build\bdist.win32\egg\paramiko\client.py", line 515, in _auth
File "build\bdist.win32\egg\paramiko\agent.py", line 343, in __init__
File "build\bdist.win32\egg\paramiko\agent.py", line 66, in _connect
File "build\bdist.win32\egg\paramiko\agent.py", line 83, in _send_message
File "build\bdist.win32\egg\paramiko\win_pageant.py", line 123, in send
File "build\bdist.win32\egg\paramiko\win_pageant.py", line 89, in _query_pageant
File "build\bdist.win32\egg\paramiko\_winapi.py", line 273, in get_security_attributes_for_user
File "build\bdist.win32\egg\paramiko\_winapi.py", line 222, in descriptor
NameError: global name 'descriptor' is not defined
关于 this issue - 它已解决,但是 - 我仍然有这个错误(最新的 paramiko
版本,从 Github 下载)。
可能 - 还有一些其他库可以通过 SSH 使用 RSA 密钥授权进行操作?
或者 - 任何解决此问题的方法 NameError
...
看来问题并没有真正解决(我也下载了最新的zip:它也可以在[GitHub]: paramiko/paramiko - (v1.15.2) paramiko/paramiko/_winapi.py上看到),所以你必须在你的paramiko中自己修复它 安装文件(固定在 v1.15.3):
编辑你的 ${PYTHON_DIR}\build\bdist.win32\egg\paramiko\_winapi.py ($ {PYTHON_DIR} 只是您的 Python 安装目录的占位符),
在行 222 和 223 只需将 descriptor
替换为 value
:
self._descriptor = descriptor
self.lpSecurityDescriptor = ctypes.addressof(descriptor)
应该变成:
self._descriptor = value
self.lpSecurityDescriptor = ctypes.addressof(value)
我以前遇到过这种类型的错误。我重启机器就解决了!
但我认为 paramiko 库中存在错误。
按照 CristiFati 的解释,将 descriptor
更改为 value
效果很好。
我也遇到了这个问题,请尝试设置allow_agent=False
,应该可以解决
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('54.***.***.110', key_filename='D:\Keys\MyOWN\priv.ppk', allow_agent=False)
我正在尝试使用 paramiko
进行 SSH,但出现错误:
>>> import paramiko
>>> ssh = paramiko.SSHClient()
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect('54.***.***.110', key_filename='D:\Keys\MyOWN\priv.ppk')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build\bdist.win32\egg\paramiko\client.py", line 366, in connect
File "build\bdist.win32\egg\paramiko\client.py", line 515, in _auth
File "build\bdist.win32\egg\paramiko\agent.py", line 343, in __init__
File "build\bdist.win32\egg\paramiko\agent.py", line 66, in _connect
File "build\bdist.win32\egg\paramiko\agent.py", line 83, in _send_message
File "build\bdist.win32\egg\paramiko\win_pageant.py", line 123, in send
File "build\bdist.win32\egg\paramiko\win_pageant.py", line 89, in _query_pageant
File "build\bdist.win32\egg\paramiko\_winapi.py", line 273, in get_security_attributes_for_user
File "build\bdist.win32\egg\paramiko\_winapi.py", line 222, in descriptor
NameError: global name 'descriptor' is not defined
关于 this issue - 它已解决,但是 - 我仍然有这个错误(最新的 paramiko
版本,从 Github 下载)。
可能 - 还有一些其他库可以通过 SSH 使用 RSA 密钥授权进行操作?
或者 - 任何解决此问题的方法 NameError
...
看来问题并没有真正解决(我也下载了最新的zip:它也可以在[GitHub]: paramiko/paramiko - (v1.15.2) paramiko/paramiko/_winapi.py上看到),所以你必须在你的paramiko中自己修复它 安装文件(固定在 v1.15.3):
编辑你的 ${PYTHON_DIR}\build\bdist.win32\egg\paramiko\_winapi.py ($ {PYTHON_DIR} 只是您的 Python 安装目录的占位符), 在行 222 和 223 只需将
descriptor
替换为value
:self._descriptor = descriptor self.lpSecurityDescriptor = ctypes.addressof(descriptor)
应该变成:
self._descriptor = value self.lpSecurityDescriptor = ctypes.addressof(value)
我以前遇到过这种类型的错误。我重启机器就解决了!
但我认为 paramiko 库中存在错误。
按照 CristiFati 的解释,将 descriptor
更改为 value
效果很好。
我也遇到了这个问题,请尝试设置allow_agent=False
,应该可以解决
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('54.***.***.110', key_filename='D:\Keys\MyOWN\priv.ppk', allow_agent=False)