0

SSH経由でサーバーに接続し(を使用してparamiko)、何かを実行し、出力をWebページに書き込む非常に単純なアプリケーションを作成しています。コマンドラインから実行するとうまく機能するスクリプトを作成しました。ただし、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を更新しても大丈夫ですか」という質問にぶら下がっている可能性があります。

Transportの代わりにSSHClientを使用している場合は、欠落しているホストキーポリシーを設定して、欠落しているホストキーを自動的に追加できるようです。

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 に答える