http over ssh over ssh

ネットワーク内にsshサーバがあって、
セキュリティ確保のために、
そのsshサーバにアクセスできるのは特定のIPアドレスからのみ、
というような場面は結構あると思います。
それでも許可されていないIPアドレスから
sshでログインしたいことはあったりします。
そういう場合、許可されたIPアドレスのマシンでsshサーバを立ち上げ、
以下を実行することで、それを踏み台にしてアクセスできます。

$ ssh -L <ローカルのポート番号(未使用である必要あり)>:<目的のsshサーバのホスト名>:<目的のsshサーバのポート番号> -p <踏み台sshサーバのポート番号> <踏み台sshサーバのアカウント名>@<踏み台sshサーバのホスト名>
$ ssh -p <ローカルのポート番号> <目的のsshサーバのアカウント名>@localhost

最初にトンネルを作って、その中にセッションを張るようなイメージですね。
もし、そこからさらにウェブサーバにアクセスしたければ、

$ ssh -L <ローカルのポート番号(未使用である必要あり)>:<目的のsshサーバのホスト名>:<目的のsshサーバのポート番号> -p <踏み台sshサーバのポート番号> <踏み台sshサーバのアカウント名>@<踏み台sshサーバのホスト名>
$ ssh -L 8080:<ウェブサーバのホスト名>:80 -p <ローカルのポート番号> <踏み台sshサーバのアカウント名>@localhost
$ wget http://localhost:8080/

のように2重にトンネルを張ってその中にhttpを通すことも可能です。

こんなこと技術的にできそうなことは理解していても、
実際にやってみてできるとちょっと感激です。
そうそう必要になることはないのでしょうが。

広告