2016-03-15 3 views
2

В настоящее время я делаю передачу SFTP с использованием Python subprocess.POPEN и PuTTY psftp.exe.Python Connect через HTTP-прокси с pysftp

Он работает, но не очень чист и не переносим.

Я хотел бы воспроизвести одно и то же поведение с помощью Python pysftp, но я не знаю, где ввести все параметры. Я имею в PuTTY следующую конфигурацию:

  • Сервер IP: 123.123.123.255
  • Порт сервера: Тип 22
  • соединения: SSH
  • AutoLogin UserName: MyUser
  • Тип прокси: HTTP
  • Прокси Имя хоста: gw.proxy.fr
  • Порт прокси: 1234
  • Прокси Имя пользователя: Pro xyUser
  • Proxy Пароль: ProxyPass

Как я должен ввести все эти параметры в pysftp, так что я могу получить мои файлы?

EDIT: Используя ответ от Мартина Прикрила, я нашел новые материалы для изучения. Если я хорошо понимаю, мне нужно использовать сокет. У меня все еще есть проблема, чтобы ввести всю необходимую мне информацию.

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
proxy = ("gw.proxy.fr",1234) 
sock.connect(proxy) 
target=("123.123.123.255",23) 
cmd_connect = "CONNECT {}:{} HTTP/1.1\r\n\r\n".format(*target) 
sock.sendall(cmd_connect) 

Реагировать, что я получаю от этого HTTP/1.0 407 Proxy Authentication Required. Какая нормальная причина нигде не использовалась для проверки подлинности прокси. Итак, вы знаете, как я могу их использовать и вводить в мой сокет?

ответ

1

Я не думаю, что pysftp поддерживает прокси. Хотя обратите внимание, что pysftp - это всего лишь обертка вокруг Paramiko library, которая поддерживает прокси.

Поэтому я предлагаю вам использовать Paramiko напрямую.

Для начала см. How to ssh over http proxy in Python?, в частности answer by @tintin.


Для аутентификации на прокси-сервер, после команды CONNECT, добавьте Proxy-Authorization заголовок, как:

Proxy-Authorization: Basic <credentials> 

, где <credentials> является основанием 64 строка в кодировке username:password.

cmd_connect = "CONNECT {}:{} HTTP/1.1\r\nProxy-Authorization: Basic <credentials>\r\n\r\n".format(*target) 
+0

Благодарим за это, но недостаточно прояснить конфигурацию прокси-сервера, особенно часть пользователя/пароля. И мне также нужна информация о том, как использовать закрытый ключ. – Steven

+0

Я удалил ключевую часть SSH. Я сделаю это позже. Это бесполезно, если я не могу подключиться. Но мне все еще нужна дополнительная информация о том, как настроить прокси-сервер ... разве у вас нет дополнительной информации для предоставления? – Steven

+1

OMG, он работает. Ты сделал это. Теперь просто нужно иметь дело с ключом – Steven

Смежные вопросы