ポート転送

sshcはLocal forwarding、Remote forwarding、Dynamic SOCKS5に対応しています。
Local forwarding
ローカルマシンの待ち受けポートへ届いた通信を、SSH接続先から到達できるホストとポートへ転送します。
転送先には、SSHサーバーから見える任意のホストを指定できます。転送先サービスがSSHサーバー自身で動作している場合は、転送先ホストに127.0.0.1を指定します。
Remote forwarding
SSH接続先のポートへ届いた通信を、sshcエンジンが動くマシンから到達できるホストとポートへ転送します。手元の開発サーバーをSSH接続先から利用する場合などに使います。
Connectionsのポート転送で[リモート転送]を選び、[SSH接続先のポート]と[転送先]を指定します。Terminalから一時的に追加し、接続設定へ保存することもできます。CLIではSSH Configに次のように保存すると、sshc ssh <接続先>で同じ転送が開きます。
RemoteForward 9080 127.0.0.1:3000待ち受けの決まりは次のとおりです。
- 待ち受けはSSH接続先の
127.0.0.1を要求します。別のアドレスを設定しても127.0.0.1を要求し、変更したことを接続ログへ表示します。 - 接続先から報告された送信元がループバックでない通信は拒否します。
- サーバー側には
AllowTcpForwarding remoteまたはyesなどの許可が必要です。
待ち受けを拒否された場合は転送の失敗を表示し、Terminal接続は続けます。SSHの応答には拒否の詳細が含まれないため、ポートの使用状況とサーバーの転送設定を確認してください。
転送先はブラウザを開いたマシンではなく、sshcエンジンから見たホストです。リモートセッションでは、リモートのsshcエンジンから見たホストです。
停止すると待ち受けと接続中の転送を閉じます。保存した転送は次のSSH接続でも開き、一時的な転送は再接続後に追加し直します。
転送先を省略するRemote SOCKSや、待ち受けポート0による自動割り当ては扱いません。
待ち受けの開始・解除要求にサーバーが30秒以内に応答しない場合は、そのSSH接続を閉じます。SSHでは返事のない要求だけを取り消せないためです。接続を開き直してから、サーバーの転送設定を確認してください。
Dynamic SOCKS
ローカル側にSOCKS5エンドポイントを開き、アプリケーションから通信ごとに転送先を指定できます。そのため、Dynamic forwardingの設定には固定の転送先入力欄がありません。
保存済みの転送設定と一時転送
Connectionsの[踏み台・転送・その他]タブの「ポート転送」では、接続先ごとに転送設定を保存できます。接続中のTerminalからは、現在のSSH接続を使って一時的な転送を開始・停止できます。
待ち受け先はローカルまたはSSH接続先のループバックアドレスに限られます。ただし、同じマシン上の別プロセスや別ユーザーからのアクセスを完全に防ぐものではありません。転送先のサービスにも、適切な認証を設定してください。接続先が待ち受け設定を守るかはSSHサーバー側の動作に依存します。