Windows OpenSSH に明示的な SOCKS5 Ncat コマンドを指定する
Ncat を OpenSSH の標準ストリーム転送ヘルパーとして使い、既定の HTTP プロキシに頼らず SOCKS5 を明示します。
Ncat が Windows OpenSSH ですでに利用できる場合、SOCKS5 プロキシ経由で接続を提供できます。その OpenSSH クライアントが使う SSH 設定にホスト項目を追加します:
Host target-via-socks
HostName ssh.example
User user
ProxyCommand ncat.exe --proxy-type socks5 --proxy proxy.example:1080 %h %p
両方のホスト名とアカウントを置き換え、ssh target-via-socks で接続します。この例は ncat.exe がヘルパーの実行ファイル検索パスにあることを前提としています。そうでない場合は、適切に引用した実行ファイルの完全なパスを使ってください。特にディレクトリにスペースが含まれる場合に重要です。
プロキシのエンドポイントは --proxy の後に置きます。OpenSSH は %h と %p を最終的な SSH ホスト名とポートに展開します。Ncat が SOCKS 接続をネゴシエートし、得られたバイトストリームを標準入力と標準出力で運びます。OpenSSH はそのストリーム上で SSH ハンドシェイクを続けます。
明示的な --proxy-type socks5 が重要です。このオプションがない場合、Ncat は指定ポートが 1080 であっても既定で HTTP プロキシを使います。SOCKS リスナーは、HTTP CONNECT 要求が SOCKS のつもりだったとは推測できません。
この例は認証なしの SOCKS エンドポイントを前提としています。SOCKS5 プロキシ一覧から候補を選ぶのは、その経路が許可された公開 SSH 宛先に限り、実際のホストとポートへの到達を確認してください。プロキシ認証が必要な場合は、後の SSH ログインとは別です。SSH 宛先のホスト鍵の検証は維持してください。ヘルパー経由で到達しても、OpenSSH が認証すべき同一性は変わりません。