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 が認証すべき同一性は変わりません。

関連記事