Python paramiko身份验证被拒绝,错误为877
我在python中使用paramiko通过ssh运行命令。我使用了以下代码:Python paramiko身份验证被拒绝,错误为877,python,linux,ssh,paramiko,Python,Linux,Ssh,Paramiko,我在python中使用paramiko通过ssh运行命令。我使用了以下代码: import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('MY-SERVER-IP', username='USERNAME',password='PASSWORD') stdin, stdout, stderr = ssh.exec_command
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('MY-SERVER-IP', username='USERNAME',password='PASSWORD')
stdin, stdout, stderr = ssh.exec_command("uptime")
print stdout.readlines()
典型的Linux主机没有任何问题,但是当在一个特殊的Linux机器上尝试时(这个机器有一个自定义的Ubuntu 12.04外壳),会出现以下错误:
身份验证被拒绝,错误为:877
有什么问题吗?我可以通过传统的ssh客户端(如Linux ssh客户端和putty)连接到我的专用Linux机箱。最终我找到了解决方案。该问题是由执行命令的
exec\u
功能引起的。它不会从服务器请求伪终端,因此如果没有伪终端请求,“我的盒子”无法处理非交互式shell。为了解决这个问题,我在调用exec_命令
时使用了get_pty=True
参数,因此第四行替换为:
ssh.connect('MY-SERVER-IP', username='USERNAME',password='PASSWORD',get_pty=True)
只是一个猜测,但可能与或有关?这些问题是关于在服务器请求用户名之前发生的主机密钥(我已经用第三行解决了这个问题)。