SSHポートフォワーディング

マシンa,b,cが図のようにネットワークに接続されているとする.

マシンbからマシンcにポートフォワードを行う.

この状態でマシンaからマシンbにSSHで入ると,bはcからフォワードされているのでマシンcの操作ができる(bにログインしたのに,bを経由して見かけ上cにログインした)というもの.

これのいいところは,aはcの情報をまったく知らないのにcにログインできること.
cをお客さんが使っているマシンだとすると,cからbにポートフォワードするようにセットアップしておけば,メンテナンスや障害対応でaからcに入れる.もちろんbにはcの情報が残ってしまうがaはcのことを全然知らない.すごい.

手順は以下の通り.


マシンb:
/etc/ssh/sshd_configにGatewayPortsを追加する.

# vi /etc/ssh/sshd_config"GatewayPorts yes"を追加
# /etc/init.d/ssh restart
 → ssh を再起動


マシンc:
マシンbにポートフォワードする.ここではbのport=10000番とcのport=22番を繋ぐ.

# ssh -R 10000:localhost:22 USER_NAME@B_IP_ADDRESS

B_IP_ADDRESSにはマシンbのIPアドレスを指定する.ログインするユーザを指定する場合はUSER_NAMEにログインユーザを指定する.指定しない場合はUSER_NAME@は取り除く.

これでマシンbとマシンcが繋がったので,マシンaをマシンbのport=10000番へsshするとマシンa→マシンcと繋がることになる.


マシンa:
マシンbにポート指定でsshする.portは10000番.

$ ssh -p 10000 USER_NAME@B_IP_ADDRESS

USER_NAME と B_IP_ADDRESS の扱いは↑と同じ.
ポートの関係はこんな感じ.

cに接続したか確かめるには,aで ifconfig をしてcの情報が表示されればOK.