首页 > 解决方案 > 如何在 python 中 ssh 到 user@host?

问题描述

import paramiko

host = "172.21.14.48"
port = 22
username = "user"
password = "xxx*9841"
command = "ls"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password )
stdin, stdout, stderr = ssh.exec_command(command)
lines = stdout.readlines()
print(lines)

此代码工作 SSH 成功。但我需要使用相同的用户名和密码 ssh 到 cp@172.21.14.48。我尝试了下面的代码,但出现错误。

host = "cp@172.21.14.48"

错误消息为:ile "C:\Program Files\Python38\lib\socket.py", line 918, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 11003] getaddrinfo 失败

有什么建议..?但是使用 putty 我可以 ssh 到 cp@172.21.14.48。

标签: pythonsshparamiko

解决方案


cp中的是ssh cp@172.21.14.48用户,所以它转到 的username参数SSHClient.connect

username = "cp"
# ...
ssh = paramiko.SSHClient()
ssh.connect(host, port, username, password)

您的服务器使用键盘交互式身份验证提示输入另一组凭据。
为此,请参阅:Paramiko/Python:键盘交互式身份验证
您必须调整代码以回答第二个用户名和密码提示。处理程序的fields参数将有两个条目,处理程序必须在其结果中返回两个答案。


推荐阅读