0

我正在编写相当简单的应用程序,它通过 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)

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

4

1 回答 1

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)
于 2011-01-20T05:18:54.800 回答