rsync の SSH 転送では、フォワードプロキシ経由の接続を SSH ホスト別名に置きます。OpenBSD 実装の nc なら、~/.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

プロキシは files.example.net:22 への CONNECT を許可している必要があります。公的な中継が認められた公開 SSH ホストなら、HTTP プロキシ一覧がアカウント不要のプロキシホストとポートの候補を提供しますが、実際の SSH 接続先とポートについて許可を確認してください。nc の -x アドレスは中継先を指定し、%h と %p は SSH の接続先とポートに展開されます。同じ nc という名前の別プログラムはこれらのスイッチに対応していない場合があります。

rsync ではその別名をリモートホストとして使います:

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

コロン 1 つのパスはリモートシェル形式を選びます。SSH は通常どおり接続先アカウントとホスト鍵の設定を使い、ヘルパーがバイトストリームを HTTP プロキシ経由で運びます。接続先にはリモートコマンド用の rsync も必要です。

一方 RSYNC_PROXY は rsync のデーモンへの直接接続を設定するもので、この SSH 呼び出しには効きません。同様に、SSH の Port を 8080 に変えても、プロキシの待ち受けを示すのではなく、接続先サービスの別ポートを選ぶだけです。

プロキシ認証が必要な場合は、選んだヘルパーが対応するインターフェースで行ってください。SSH のユーザー名はプロキシのユーザー名ではありません。

関連記事