LoginSignup
2
0

More than 5 years have passed since last update.

dinghyでもSSHポートフォワードして `https://localhost` でアクセスできるようにする

Posted at

TL;DR

$ sudo bash -c "$(dinghy env); ssh docker@$(dinghy ip) -i $DOCKER_CERT_PATH/id_rsa -L 443:localhost:443"

背景

Docker for Macだと IOが遅くて多少マシなdinghyを使ってる。

dinghyだと内部的にVirtualBoxでboot2dockerのVMが動いてるので、例えばホストの80番ポートをバインドすると、localhostではなくてVM上の80ポートがバインドされる。

IPアドレスは dinghy ip コマンドで確認できるので、多くの場合は、 http://(dinghyのIPアドレス) みたいなかんじでIPアドレス指定でアクセスするなり、 hoge.localdomain みたいな適当なホスト名で /etc/hosts に登録しておけば問題ない。

しかしながら、Google認証のOAuth2のリダイレクトのテストとかをローカルでやろうとすると、 https://localhost みたいなURLでアクセスできないと困ることがある。Google認証のリダイレクトURLは正式なTLD (TopLevelDomain) ではない hoge.localdomain みたいな 適当なドメイン名は登録できずエラーになる。ただしテスト用に localhost は許可されているようだ。

やってみた

というわけで前置きが長くなったけど、 dinghyでも https://localhost  でアクセスしたい。
なんとなくVirtualBoxの設定でもできそうな気もしつつ、設定画面を眺めてもよくわからんかったので、SSHポートフォワードでやってみた。

最初443をポートフォワードすればよいんだから、こんなかんじかなーっと思ってやってみたけど、この方法はうまくいかない。

$ docker-machine ssh dinghy -L 443:localhost:443

一般ユーザ権限では1024以下のWell Knownポートがバインドできないからだ。

じゃあsudoすればよいかと思ったけど、これもうまくいかない。

$ sudo docker-machine ssh dinghy -L 443:localhost:443

sudoするとdinghyの環境変数が見えなくなる。

結論として、とりあえずこうすればポートフォワードできた。

$ sudo bash -c "$(dinghy env); ssh docker@$(dinghy ip) -i $DOCKER_CERT_PATH/id_rsa -L 443:localhost:443"

もっとスマートなやり方がありそうな気もするんだけど。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0