Не удается подключиться к серверу через SSH в приложении Django - PullRequest
0 голосов
/ 18 января 2011

Я пишу довольно простое приложение, которое подключается к серверу через SSH (используя paramiko), что-то делает и записывает вывод на веб-страницу.Я написал скрипт, который хорошо работает, когда я запускаю его из командной строки.Однако, если я запускаю его в приложении Django, он не может пройти через connect part.

SSH, подключить часть:

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

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

output = ...

View:

def ssh_output(request):
    return HttpResponse(output)

Есть идеи, почему он так себя ведет?Есть ли способ это исправить?

1 Ответ

3 голосов
/ 20 января 2011

Я предполагаю, что ваше приложение 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)
...