Для SSH-транспорта rsync подключение через прямой прокси задаётся на псевдониме узла SSH. С реализацией nc из OpenBSD в ~/.ssh/config можно выбрать HTTP-прокси без учётной записи:

Host sync-target
    HostName files.example.net
    User syncuser
    Port 22
    ProxyCommand nc -X connect -x proxy.example.net:8080 %h %p

Прокси должен разрешать CONNECT к files.example.net:22. Для публичного узла SSH, где разрешены публичные посредники, список HTTP-прокси предлагает кандидатов на узел и порт прокси без учётной записи; проверьте разрешение для фактической цели SSH и порта. Адрес -x у nc указывает посредника; %h и %p разворачиваются в назначение и порт SSH. Другая программа с тем же именем nc может не поддерживать эти ключи.

Используйте псевдоним как удалённый узел в rsync:

rsync -av -e ssh sync-target:/srv/export/ ./export/

Путь с одним двоеточием выбирает форму удалённой оболочки. SSH использует обычную конфигурацию целевой учётной записи и ключа узла, а помощник передаёт свой поток байтов через HTTP-прокси. Назначению также нужен rsync для удалённой команды.

RSYNC_PROXY, наоборот, настраивает прямое подключение rsync к демону. Оно не настраивает этот вызов SSH. Точно так же смена Port в SSH на 8080 выбрала бы другой порт службы назначения, а не указала бы на слушатель прокси.

При необходимости оставляйте аутентификацию прокси на интерфейсе, который поддерживает выбранный помощник; имя пользователя SSH — не имя пользователя прокси.

Похожие статьи