ずっと知りたかった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