在Django应用程序中无法通过SSH连接到服务器

时间:2011-01-18 08:36:49

标签: python django paramiko

我正在编写相当简单的应用程序,它通过SSH连接到服务器(使用paramiko),执行某些操作并将输出写入网页。我写了一个脚本,当我从命令行运行它时效果很好。但是,如果我在Django应用程序中运行它,则无法通过connect部分。

SSH连接部分:

transport = paramiko.Transport((host, port))

# application cannot get through this line
transport.connect(username = '***', password = '***')

output = ...

查看:

def ssh_output(request):
    return HttpResponse(output)

知道为什么会这样吗?有没有办法解决它?

1 个答案:

答案 0 :(得分:3)

我猜你的Django应用程序可能运行的用户不同于你运行命令行脚本的用户。另外,我猜这可能是Django应用程序用户第一次尝试ssh到主机,因此它可能会挂起某种“可以更新〜/ .ssh / known_hosts”的问题。

如果您使用SSHClient而不是Transport,那么您可以设置缺少的主机密钥策略以自动添加缺少的主机密钥ala

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(your_host, port=your_port, username=your_username, password=your_password)