2019-10-04に更新

リモート開発には、sshトンネルが便利

code-serverを使ってブラウザ上だけでセキュアで快適に開発してみる|masuidrive|note

増井さんキター!
だよね?もはやローカルPCで開発とかしないよね?時代はリモートだよね!?

記事に書かれているとおり、リモート開発では、ポートの開閉が問題になります。ローカル開発で気軽にlocalhost:3000にアクセスするような感覚でサーバのポートを開けると、全世界から3000番にアクセス可能になってしまいます。自分のIPアドレスを調べて限定公開すればいい?毎回そんな面倒なことやってられないよ。

そのソリューションとしてVPNはりました、ということだったのですが。記事見て分かる通り、VPNもめんどくさいのですよね。過去何回かトライして、だいたいVPNサーバの維持がめんどくさくなって諦めています。

代わりに使っているのが、SSHのport_forwarding。

sshの設定ファイルに、こんな具合に書いておきます。

Host linode17
  HostName xxx.xxx.xxx.xxx
  LocalForward 127.0.0.1:3000 127.0.0.1:3000
  LocalForward 127.0.0.1:1337 127.0.0.1:1337

んでいつものようにサーバプロセスを立ち上げてlocalhost:1337にアクセスすると

image.png

ほい来た。

sshのport_forwadingというのは、sshの接続のついでに、ローカルのポートをサーバのポートにつないどいてね、という機能です。SSHでつないだ接続(トンネル)の中をデータが流れるので、SSHトンネルとも呼ばれます。
SSH port forwarding - Example, command, server config | SSH.COM
man page ssh_config section 5
SSH接続が前提の機能なので、当然そのポートにアクセスできるのは自分だけに限定されます。

この方法の嬉しいところは、WEB開発で当たり前のように使うsshの設定ファイルに書くだけですべてが完了するところです。開発サーバの他にもう一台サーバを維持したりしなくていいし、接続を忘れて「あれ?つながらない?」みたいなことにもならない。

2つ3つの開発を並行していて、localhost:3000の奪い合いになるのはWEB開発あるあるですが、リモートに用途ごとの開発サーバを用意しておけば、接続を切り替えるだけで毎回localhost:3000を使うことができるのも地味に嬉しい。

一方で、VPNを用意しておくと、公衆無線LANなんかで接続するときの安心感が大きいので、そこはトレードオフですね。

よかったらお試しください。


daisuke furukawa

おひるねのできるフリーランサー。「モバイラーズオアシス」の中の人でもあります。

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

コメント