Вопрос или проблема
Я установил прокси для curl и wget, используя команды:
export http_proxy="http://xxx.xx.xx.xx:8080"
export https_proxy="https://xxx.xx.xx.xx:8080"
Они работают. Поэтому я попробовал
export sftp_proxy="http://xxx.xx.xx.xx:8080"
export sftp_proxy="https://xxx.xx.xx.xx:8080"
Но соединение истекает по времени.
OpenSSH не использует эти переменные окружения. Чтобы туннелировать ваши SSH соединения через HTTP CONNECT прокси, вам нужно найти специальный прокси клиент и указать его в опции ProxyCommand
OpenSSH.
– либо используя опцию ssh -o
в командной строке, либо используя конфигурационный файл ~/.ssh/config
, в зависимости от вашего предпочтения.
Один из распространенных HTTP прокси клиентов – это proxytunnel
, его можно использовать следующим образом:
Host *
ProxyCommand "proxytunnel -p xxx.xx.xx.xx:8080 -d %h:%p"
Если вам нужен доступ к прокси через HTTPS, добавьте опцию -E
к proxytunnel (не к ssh).
(Обычно это либо http:
или https:
, если они не на разных портах – ваш первоначальный пример использования обоих способов на одном порту 8080 кажется немного странным. То, как вы получаете доступ к прокси, отличается от того, что вы туннелируете через прокси.)
Ответ или решение
Установка прокси для SFTP в Ubuntu через терминал может быть сложной задачей, поскольку OpenSSH, который используется для SFTP, не поддерживает прямую настройку прокси через стандартные сетевые переменные окружения, такие как http_proxy
или https_proxy
. Рассмотрим, как можно обойти это ограничение.
Понимание проблемы
Сначала необходимо понять, что переменные окружения, используемые для curl
и wget
, не применимы к OpenSSH и, соответственно, к SFTP. При работе с OpenSSH для маршрутизации через HTTP-прокси требуется применение других методов, таких как использование команды ProxyCommand
.
Решение с использованием Proxytunnel
-
Установка Proxytunnel:
- Для начала установите
proxytunnel
из стандартного репозитория Ubuntu. Для этого выполните команду:sudo apt-get install proxytunnel
- Для начала установите
-
Настройка SSH для использования прокси:
- Для того чтобы указать SSH использовать HTTP-прокси, необходимо изменить конфигурационный файл SSH или использовать специальный флаг командной строки.
- Вы можете изменить файл конфигурации SSH, расположенный по пути
~/.ssh/config
, следующим образом:Host * ProxyCommand proxytunnel -p xxx.xx.xx.xx:8080 -d %h:%p
Здесь
xxx.xx.xx.xx:8080
— это IP-адрес и порт вашего HTTP-прокси,%h
и%p
— это хост и порт, к которому вы желаете подключиться через SFTP.
-
Дополнительные параметры:
- В случае, если прокси-сервер требует HTTPS-соединения, включите флаг
-E
в командную строкуproxytunnel
:ProxyCommand proxytunnel -E -p xxx.xx.xx.xx:8080 -d %h:%p
- Убедитесь, что ваш прокси-сервер корректно поддерживает указанный тип подключения (HTTP или HTTPS).
- В случае, если прокси-сервер требует HTTPS-соединения, включите флаг
Проверка работоспособности
После настройки конфигурационного файла, проверьте подключение с использованием SFTP:
sftp user@remote_host
Если конфигурация выполнена правильно, соединение должно будет проходить через указанный прокси.
Заключение
Использование proxytunnel
позволяет настроить проведение SFTP-сессий через HTTP-прокси с помощью OpenSSH. Это решение особенно полезно в ограниченных сетевых окружениях, где непосредственные соединения запрещены или ограничены. Убедитесь, что вы корректно настроили все параметры, и ваше соединение должно проходить без проблем.