Git はリモート URL の名前で SSH ルールを選択する
Git リモート URL に SSH ホストの別名を指定すると、意図した Host ブロックと ProxyCommand が選ばれます。
その別名がプロキシ経路を受け持つ場合は、Git リモートで SSH の別名を使ってください:
Host code-via-proxy
HostName git.example.net
User git
ProxyCommand nc -X connect -x proxy.example.net:8080 %h %p
code-via-proxy は指定した SSH 名と照合されます。次に HostName が実際のサーバーを特定します。この例には OpenBSD 互換の netcat が必要です: -X connect SSH の宛先へ HTTP CONNECT を要求します。
新規チェックアウトの場合:
git clone git@code-via-proxy:team/project.git
既存のチェックアウトの場合:
git remote set-url origin git@code-via-proxy:team/project.git
実際のリポジトリのパスに置き換えてください。別名が変えるのは接続の選択であり、そのサーバー上でのリポジトリの同一性ではありません。公的な中継を許可するネットワーク上の公開 Git SSH サーバーには、HTTP プロキシ一覧がプロキシのホストとポートの候補を提供します。プロキシ アカウント無しの例は、実際の SSH 宛先とポートへの CONNECT を許可するノードでのみ使ってください。
[email protected]:team/project.git を使うリモートは代わりに git.example.net に一致します。別名の HostName がそこを指しているという理由だけで別名が選ばれるわけではありません。別名を使うか、意図したルールを実際の名前の下に置いてください。
以前に一致するブロックも確認してください。ほとんどの SSH オプションでは最初に得られた値が優先されるため、同じオプションを定義する広い既定値より前に具体的な設定を置いてください。