我在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("uptime")
print stdout.readlines()典型的Linux主机没有任何问题,但是当尝试在一个特殊的Linux盒(该盒子有一个Ubuntu12.04的自定义外壳)时,会出现以下错误:
身份验证被错误拒绝: 877
有什么问题吗?我可以通过传统的ssh客户端(如Linux客户机和putty )连接到我的专用Linux盒。
发布于 2014-12-23 10:39:09
最后我找到了解决办法。这个问题是由于exec_command函数造成的。它不会从服务器请求pseudo-terminal,所以如果没有伪终端请求,我的框就无法处理非交互式shell。为了克服这个问题,我在调用get_pty=True时使用了exec_command参数,因此第四行替换为:
ssh.connect('MY-SERVER-IP', username='USERNAME',password='PASSWORD',get_pty=True)https://stackoverflow.com/questions/27579665
复制相似问题