ssh -D はSOCKS リスナーを作成しますが、SSH 自身の接続に既存のものを選ぶわけではありません。OpenBSD 版の nc では、SSH クライアント設定にホストエントリを記述します。たとえば ~/.ssh/config です:

Host server-via-socks
    HostName ssh.example.com
    User alex
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

ssh server-via-socks を実行します。ヘルパーは SSH クライアントのマシン上の SOCKS5 サービスに接続し、対象のホスト/ポートを要求します。その後 SSH はストリーム内で通常のホスト鍵検証とユーザーログインを行います。

プロキシのパスワードを入力する前に、ヘルパーの対応状況を確認してください。OpenBSD nc が文書化しているのは HTTP CONNECT のプロキシ認証であり、SOCKS 認証ではありません。資格情報で保護された SOCKS サービスには、別の互換ヘルパーが必要になる場合があります。未対応のクライアントに合わせるために共有プロキシの認証を外さず、そのまま維持してください。

宛先が見るのはプロキシの外向き接続ですが、SSH の検証は依然として実際のサーバーを識別します。そのポートに到達できない場合は SSH ログインより前に発生します。トンネルが受理された後に鍵が拒否される場合は SSH の資格情報の問題です。

この設定はこの SSH 接続にのみ適用されます。ブラウザーの通信やその他のアプリケーションを設定するものではありません。

関連記事