我正在尝试使用 sshtunnel 模块从 Windows 计算机启动 ssh 隧道到 Linux 计算机,其中我的 Linux 计算机没有密码。
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
'172.30.1.101',
ssh_username="root",
ssh_password="",
remote_bind_address=('127.0.0.1', 1883)
)
server.start()
我不断出现以下错误。
remote_bind_address=('127.0.0.1', 1883)
File "C:\Users\Chirag.Acharya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sshtunnel.py", line 905, in __init__
logger=self.logger
File "C:\Users\Chirag.Acharya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sshtunnel.py", line 1096, in _consolidate_auth
raise ValueError('No password or public key available!')
ValueError: No password or public key available!
该怎么办!我的 ssh 不需要任何密码! root 用户没有设置登录密码。
话虽如此...
sshtunnel
库(在当前迭代中)不支持目标系统的 SSH 密码为空的场景。这是因为 它执行身份验证信息检查的方式:
if not ssh_password and not ssh_loaded_pkeys:
raise ValueError('No password or public key available!')
由于 您为
ssh_password
传递的空白字符串是“假”,因此库(正确地)抛出此错误。
如果您足够勇敢,您可以分叉存储库并调整此逻辑,使其明确允许将空白字符串作为有效的 SSH 密码传递:
if (not ssh_password and ssh_password != '') and not ssh_loaded_pkeys:
raise ValueError('No password or public key available!')
之后,就需要 在当前版本上安装分叉分支。