機械学習の詰め合わせ

機械学習周りで考えたことやインプットしたことをまとめる場所。

自宅のマシンに外部からSSH接続する各種パターンについて

概要

自宅に構築したPC/サーバに、外部のネットワークからSSH接続する場合の構築パターンについてまとめる。

前提条件

  • 自宅の回線は通信事業者が提供する一般家庭向きの回線を想定。したがってIPアドレスは可変。
  • 自宅マシンは基本的にCLIで操作する(GUIは使わない)。したがって通信量はさほど多くない想定。
  • 一般的なIaaS/PaaSに構築する場合と比べてセキュリティリスクが同程度かそれ以下であること(例:パスワードでログインしない、ポートはSSHのみ解放)。
  • CLIを作業する時にレスポンスが十分速くて作業にストレスを感じないこと(レイテンシが100ms以下)。
  • 運用費用は1,000円/月以下であること。

実現方法の候補

  1. グローバルIP固定
    • 通信事業者が提供している固定IPアドレスサービスを契約し、自宅PCをインターネットに公開する。
  2. Dynamic DNS
  3. 踏み台サーバ + リバースSSHトンネリング
    • 固定のIPアドレス(またはFQDN)が付与されたサーバを踏み台として構築し、自宅マシンから踏み台サーバにリバースSSHトンネルを貼ることで踏み台サーバ経由で自宅マシンに接続する。
  4. 踏み台サーバ + VPN
    • 3と同様に固定IPの踏み台サーバを構築し、自宅マシンと踏み台サーバ間をVPNでつなぐ。例) WireGuard, OpenVPN
  5. VPNサービス
    • 4と同様な構成が一般消費者向けサービスとして提供されている。例)GlocalVPN
  6. sishサーバ
    • 3と同様に固定IPのサーバを構築し、sishサーバとして運用する。sishはngrokと同様の機能のオープンソース実装。FQDNIPアドレスの紐付けを管理しているという点では2の構成と似ている。

それぞれの実現方法の特徴

実現方法 メリット デメリット 運用費用
1 グローバルIP固定 最も基本的な構成。 回線業者及びプロバイダがサービス提供している場合のみ利用可能。 880円/月〜*1
2 Dynamic DNS 無料のDDNSサービスを利用すれば運用費用がかからない。 IPが変わる前後で接続できない時間が生じる(数分〜数十分)。DDNSサービスがダウンしている場合は接続できない。*2 無料〜
3 リバースSSHトンネリング 自宅ルータのポート解放設定が不要。踏み台サーバ上に認証情報をおかなくて良い。 何らかの原因でSSHセッションが切断された場合は接続できなくなる。 643円/月〜*3
4 VPN - - 643円/月〜
5 sish - - 643円/月〜

※メリットデメリットがよくわからなかったものは空欄にしています。

最終的に選択した構成

著者の契約している回線プロバイダは固定IPのサービスを提供していなかったので1以外で検討した。 2はセキュリティ上の懸念が払拭できなかったため、検討から除外した。 また、5は仕組みがよく分かっていないので判断ができず、検討から除外した。 セキュリティの観点からは3と4はほぼ同等と考えられるが、3の方が設定内容が少なく、構成もシンプルと考えたためこの構成を選択した。

*1:ASAHIネットの固定IPサービスの価格を参照した。

*2:特に無料のDDNSサービスの場合は、IPとFQDNの紐付けが汚されるといったセキュリティ上の懸念があるのではと筆者は考えているが、脆弱性について明確に言及されたソースは見つけられなかった。

*3:ConoHa, さくらのVPSで最小の構成で1ヶ月レンタルする場合の費用を基準とした(ConoHa(512MB): 682 円/月, さくらのVPS(512MB): 643円/月)。