【问题标题】:how to ssh to user@host in python?如何在 python 中 ssh 到 user@host?
【发布时间】:2021-06-15 08:26:49
【问题描述】:
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,在getaddrinfo中 对于 _socket.getaddrinfo(host, port, family, type, proto, flags) 中的 res: socket.gaierror: [Errno 11003] getaddrinfo failed

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

【问题讨论】:

  • Using username "cp". Keyboard-interactive authentication prompts from server: | Actual Username: | Actual Password:

标签: python ssh paramiko


【解决方案1】:

ssh cp@172.21.14.48 中的cp 是一个用户名,所以它转到SSHClient.connectusername 参数:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-02
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多