Paramiko 连接无需询问 ssh 密钥

Thu*_* Ra 3 python linux ssh paramiko ssh-keys

这是我连接服务器的 python 脚本。但是当我运行脚本时,它要求我输入 ssh 密码。我怎样才能避免询问我的 ssh 密码密钥?

host   = '192.168.43.3'
user   = 'root'
passwd = 'ppawd'
ssh    = paramiko.SSHClient()

ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=passwd)
transport = ssh.get_transport()
channel = transport.open_session()
channel.setblocking(1)
channel.settimeout(30)
command = "ls -a"
ssh.exec_command(command)
Run Code Online (Sandbox Code Playgroud)

小智 7

我遇到了同样的问题。我认为这里的其他答案没有意识到这个问题的真正目的。这是一个老问题,但我想帮助像我这样在谷歌搜索后最终来到这里的其他人。

您需要禁用 ssh 代理功能allow_agent=False,然后它将不再提示您输入密码。Paramiko 正在尝试连接到 ssh 代理,我假设尝试读取密钥。我还添加了look_for_keys=False,因为它将禁用检查要使用的私钥。

例子:

client.connect(server, port=port, username=username, password=password, look_for_keys=False, allow_agent=False)
Run Code Online (Sandbox Code Playgroud)