rsync が HTTP プロキシ経由で SSH ホスト別名を再利用できるようにする
rsync のリモートシェル転送が使う SSH 設定に HTTP CONNECT ヘルパーを接続します。
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 のユーザー名はプロキシのユーザー名ではありません。