python - 如何在 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。
解决方案
cp
中的是ssh cp@172.21.14.48
用户名,所以它转到 的username
参数SSHClient.connect
:
username = "cp"
# ...
ssh = paramiko.SSHClient()
ssh.connect(host, port, username, password)
您的服务器使用键盘交互式身份验证提示输入另一组凭据。
为此,请参阅:Paramiko/Python:键盘交互式身份验证
您必须调整代码以回答第二个用户名和密码提示。处理程序的fields
参数将有两个条目,处理程序必须在其结果中返回两个答案。
推荐阅读
- android - 在 Android Studio 的片段中实现菜单
- sql - 在 Informatica 或 Oracle 中逐个字段删除重复值
- javascript - 如何在悬停时暂停滑块?
- blockly - 如何简化这个绘制雪花的 Blockly 程序?
- amazon-web-services - AWS Amplify 'currentUserCredentials()' 返回意外的身份验证值,错误?
- javascript - React.JS SSR 的 CDN 缓存
- f# - 在 F# 中实现相当于 C# 的 null 测试
- android - 通过 SSH 在 GitHub 上对 Jenkins 进行身份验证
- flutter - Flutter:带有自定义地图的下拉菜单
- macos - Android Studio 主菜单栏在 Mac 上不显示