SSH ポートフォワーディングによるトンネリング、2例
また、自分用のメモです。
以下のような環境があるとします。
- ネットワーク外部からの SSH アクセスをうけつけるサーバがある。
- ホスト名は miku (仮名) とします。
- ネットワーク内部のみからアクセスできるサーバがある。
- SSH ログインと HTTP アクセスを受け付けます。
- ホスト名は luka (仮名) とします。
- 外部からは negitoro.dyndns.example.com (仮名) で miku にアクセスできるとします。
以下は、外部の Mac OS X から miku の SSH を経由して luka にアクセスする操作の例のメモです。Linux でも同様になると思います。Windows は知らん。
HTTP のフォワーディング
Terminal.app で以下のようにオプションをつけて ssh ログインします。
Mac $ ssh -L 8080:luka:80 negitoro.dyndns.example.com Last login: Fri Apr 22 19:32:44 JST 2011 from roadroller.example.co.jp on pts/1 miku $
ログインしている間は、Mac の localhost 8080 番ポートへのアクセスが、miku を経由して luka の 80番ポートにフォワーディングされます。
luka にあるファイルを Mac から Emacs の Tramp で編集する
Mac の ~/.ssh/config ファイルに以下の内容を追記します。
Host forwarding HostName localhost Port 22222
以下のようにオプションをつけて ssh ログインします。
Mac $ ssh -L 22222:luka:22 negitoro.dyndns.example.com Last login: Fri Apr 22 19:32:44 JST 2011 from roadroller.example.co.jp on pts/1 miku $
ログインしている間は、Mac の localhost 22222 番ポートへのアクセスが miku 経由で luka の 22番ポートにフォワーディングされます。また、localhost:22222 には forwarding という別名で SSH アクセスできるようなります。
こうすると、Mac で動いている Emacs でファイルを開くときに /forwarding: というプレフィクスをつけることで、luka のファイルにアクセスできるようになります。