sshのport forwarding機能を使って公開されていないポートへアクセスする

スポンサード リンク

外部ネットワークのPC client-pc からプライベートLANの中のサーバ target へのアクセスは,踏み台サーバ ssh-gateway を経由したSSH接続しか許可されていないというのはよくあるシチュエーション。

note-pc  --ssh--> ssh-gateway  --ssh--> target

そんな状況下で,一時的にWebサーバを立てるため, target のポートを外に露出させたくなるのも良くあること。 これにsshのポートフォワーディングで対応する方法をメモしておく。

target の8000番ポートを note-pc の80番ポートからアクセスできるようにするには note-pc から以下のオプションでssh接続する。

ssh -R 80:target:8000 user@ssh-gateway

上記のオプションでは, note-pc からのlocalhost:80へのアクセスのみtarget:8000へ転送される。 他のPCからnote-pc:80へのアクセスも転送するには -g オプションを付加してssh接続する。

実用を考えると,バックグラウンドで実行するためのオプションを幾つかつけて,以下のコマンドが有用だろう。

ssh -t -f -N -g -R 80:target:8000 user@ssh-gateway

余談だが,動作確認のためにwgetを使うときは, -O - オプションを付けて標準出力へ吐き出すようにすると便利。

wget http://notepc:80 -O -

Comments !

social