Skip to content

ポート転送 ​

Local forwardingの設定

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 <接続先>で同じ転送が開きます。

sshconfig
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サーバー側の動作に依存します。