#SSH系トンネルまとめ
例えばラボの環境などsshアクセスは許可されているが、他のアクセスは制限されている場合(踏み台サーバー経由)などあると思います。そんな時には ssh tunnel を張って port forwarding する方法があります。まとめのサイトは沢山ありますが、忘備録を兼ねた良く使うトンネルまとめです。
#良く使う2種類
- ローカルフォワード(-L オプション)
- ダイナミックフォワード(-D オプション)
##ローカルフォワード(-L オプション)
ローカルのポートにアクセスするとリモートからアクセスできるターゲットにアクセスする場合に使用します。1:1 でローカルポートとターゲットを設定するのでわかりやすいかと思います。
ssh -L 33890:192.168.1.1:3389 ユーザ名@ホスト
##ダイナミックフォワード(-D オプション)
接続元の端末ブラウザでSOCKS proxyの指定をローカル(127.0.0.1)と指定したポート(9999)にする。アクセスするポートが沢山有る場合にはこちらがオススメです。
ssh -D 9999 ユーザ名@ホスト
(参考)
Chrome の Extension にはfoxy proxyというExtensionがあるので以下のように設定すればOKです。
共通オプションの説明
g オプションは取り扱い注意ですが、基本的には f, N, g オプションを付けて実行させて良いかと思います。
- -f : バックグラウンド動作
- -N : コマンド実行無し
- -q : quite mode
- -g : 外部からのアクセスを許可
#ファイルも送りたい
ファイルもsftpで送りたいって時もあると思うので、そんな時は↓
sftp -o ProxyCommand='\''/usr/bin/nc -X 5 -x 127.0.0.1:9999 %h %p'\'' ユーザ名@ホスト
使っているポートの確認方法
最近のlinux系だと ss で確認出来ますが、macOS の場合は以下です。
lsof -n -P -iTCP -sTCP:LISTEN