NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2018.04.20
#36
バックエンドへの道

デビューしちゃう? ポートフォワーディングにレッツチャレンジ!

TK

TKです。

先日、とある案件でAWSのサビースのひとつであるLightsailでWordPressを利用したときに、phpMyAdminへアクセスするためにsshポートフォワーディングが必要となり、少し調べたので簡単にまとめることにしました。

実際に、LightsailのWordpress構成で試してみると理解がしやすいのでオススメです。

はじめに

今回はbitnamiのphpMyAdminへの接続方法をベースにsshポートフォワーディングに触れてみましょう。

sshやsftpでサーバへ接続するとphpMyAdminの存在を確認することができるのですが、http://bitnami-site.com/phpmyadmin/ にアクセスしても
「For security reasons, this URL is only accessible using localhost (127.0.0.1) as the hostname.」
と表示されるだけです。

そう、このphpMyAdminにはlocalhost(172.0.0.1)…つまりサーバ自身からしかアクセスすることができないのです。

試しにssh接続して、
curl localhost/phpmyadmin/
を実行すると問題なくログイン画面にアクセスできていることが確認できるはずです。

ここで、sshポートフォワーディングの出番です。

ポートフォワーディングとは

ポートフォワーディングについて調べてみると「特定IPポートに送られてきたデータを指定先に転送する機能」という説明が出てきます。

あーそーゆーことね完全に理解した(わかってない)。

IPポートってあれですよね? 80番とか3360番とかそんな感じのやつ。
なんかサーバとかパソコンとかで開いたり閉じたりするドアっぽいやつ。たぶん、そう。
づやさんもそんな感じのことを言っていた気がするので大丈夫だと思います。

そのIPポートに送られてきたデータを指定先に転送すると。
つまり、自宅に届けられた荷物を会社受取に変更するようなイメージですよね。
いろいろなパターンはあると思いますが、わかりやすい例えだなぁと思わず自画自賛してしまいました。

どうでしょう、理解できましたか? できてないですよね、わかります。
文章で理解しようとするより、実際にコマンドを見た方が早いと思うのでさっそく使ってみましょう。

使ってみる

サーバの80番ポートに送られてきたデータを、自分のパソコンの指定ポート(今回は仮に8080とする)に転送してブラウザで表示してみましょう。

いつものssh接続にスパイスを加えるだけ

sshポートフォワーディングのやり方は簡単です。
いつものsshコマンドにちょっとスパイスを追加するだけでできてしまうのです。

こちらがいつものssh接続。

ssh user-name@remote-host -i keyfile

そして、ポートフォワーディングする時のssh接続はこちら。

ssh user-name@remote-host -i keyfile -L 8080:localhost:80

それでは、スパイス部分の -L 8080:localhost:80 の内容について簡単に説明します。

-L
LocalForwardのLです。
このオプションを指定することにより、リモートの特定IPポートのデータをローカルの指定ポートに転送することができます。

8080:
指定先のポート番号を8080に設定します。
0-1023は一般ユーザは使うことができないので、1024以上の番号を指定しましょう。

localhost:80
特定のIPポートを設定します。
サーバのIPポートを指定します。

簡単ですね! 僕も理解できました。

今回のまとめ

今回はLオプションしか使用しませんでしたが、逆パターンのRオプションなどもあります。

使い方次第で色々なことができ、かなり奥が深いsshポートフォワーディングですが、今回の使用パターンはわりと理解しやすく、いい取っかかりになったのではないでしょうか。