localhostにPublic IPをマップして、リモートでの開発をあたかもローカルで開発してるようにする方法

ずっと知りたかったlocalhostへのマッピング方法がやっとわかった。

例えば、リモートホスト上(IP 111.111.111.111)で rails s -p 32884 -b 0.0.0.0で開発していた場合、普段は問題ないのだが、OAuthのログインのリダイレクト/コールバック先がlocalhost:3000で決め打ちされている場合、ユーザ認証が失敗してしまう。ユーザアカウントのroleをうまく変更して対処するしかなかった。それが下記のようにSSHでポートフォワーディングすると、

$ ssh -L 3000:localhost:32884 ubuntu@111.111.111.111

もしくは通信の暗号化を気にしないならsocat でもできる。

$ socat TCP-LISTEN:3000,fork,reuseaddr TCP:111.111.111.111:32884

ローカルの開発機のブラウザでloalhost:3000をたたくとサーバ側の開発ポートにマッピングされる。これでOAuthのリダイレクトも問題なくなりリモートホストを意識しないで開発できる。

これ絶対探してる人多いはず。

参考:https://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

Related Posts