🔐

クラウド上にほぼ無料で安全な開発環境を作る(VSCode SSH + Tailscale + Oracle Cloud)

2024/04/20に公開

はじめに

どこからでも使える24時間動く環境が欲しいと思って作ってみました。
Oracle Cloudではとても大きい無料枠があるので、それを利用します。
参考:https://tailscale.com/kb/1149/cloud-oracle

※ほぼ無料とは言いましたが、ブートボリューム分で280円/月程度かかります、、

Oracle CloudでVMを作成する

※アカウントを作る際にホームリージョンをOsakaを選んでおくとスムーズに作れるかもしれません。

  1. シェイプの選択
    シェイプはAmpereを選ぶと、CPUとメモリー量を選択できます。
    無料枠では1つのインスタンスに絞ることで、最大4CPU、24GBまで可能です。

  2. SSHキーの追加から秘密鍵を保存
    最初は普通にSSHをするため、保存しておきます。

  3. VMの作成
    あとは何も変更せずVMを作成します。
    ブートボリュームがデフォルトで46GBありますが、足りない場合には適宜変更が必要です。

Tailscaleからプライベートにアクセスする

  1. 作成したVMへSSHで入る
    先ほど保存した秘密鍵を使ってSSHで入ります。

    mv <保存した秘密鍵のpath> ~/.ssh/oracle-ssh.key
    chmod 400 ~/.ssh/oracle-ssh.key
    ssh -i ~/.ssh/oracle-ssh.key opc@<インスタンスのパブリックIP>
    
  2. VMにTailscaleのインストール
    参考:https://tailscale.com/kb/1031/install-linux
    今回はOracleLinux8を使っているので、上を参考に進めてください。
    途中でTailscaleへのログインが出てくるので、登録はお忘れずに。
    「Setting up Tailscale on Oracle Linux 8」の手順6までできればOKです。

  3. TailscaleからOracle Cloudにプライベートでアクセスする

    1. UDPポート41641を許可する
      「ネットワーキング」タブから「仮想クラウドネットワーク」を選択し、VMが作成された特定のVCNを選択します。
      「セキュリティリスト」を選択し、UDPポート41641のステートレス・イングレス・ルールを作成します。

    2. VMからルートをアドバタイズする
      以下をVMで実行
      10.0.0.0/24部分はVMを置いているサブネットにより適宜変更してください。

      sudo tailscale up --advertise-routes=10.0.0.0/24,169.254.169.254/32 --accept-dns=false
      
    3. tailnetにOracle DNSを追加する
      TailscaleのDNSタブからAdd nameserver -> Customを選び以下のように追加。

    4. パブリックSSHを削除する
      「ネットワーキング」タブから「仮想クラウドネットワーク」を選択し、VMが作成された特定のVCNを選択します。

      定義されているイングレスルールから、22ポートが許可されているルールを削除します。

      この時点で、tailnodeからコネクトできなくなった場合には以下を試してください
      [確認方法]
      TailscaleからLAST SEENがConnectedのままであれば大丈夫です。

      https://tailscale.com/kb/1149/cloud-oracle#troubleshooting

    5. Tailscale経由でsshする
      ここまでできれば、Tailscale経由でsshできるようになっています。
      Tailscaleのmachinesから接続したいVMのIPを使ってアクセスしてみましょう。
      ※接続元のデバイスもTailscaleに登録する必要があります。

      ssh -i ~/.ssh/oracle-ssh.key opc@<tailscale上のvmのIP>
      

    1.キーの有効期限を無効にする
    TailscaleのGUI上からキーの有効期限を無効にしておきましょう。
    デフォルトでは有効期限は180日になっています。(セキュリティ的に不安な場合には不要)

  4. VSCodeからOracle Cloudへのremote ssh接続
    Tailscaleから公式の拡張が出ていますが、今回はremote-sshの拡張を使用します。

    1. ssh/configの追加
      左側のタブからリモートエクスプローラーを選択

      SSHの歯車マークを押すと、~/.ssh/configがない場合にも作成してくれます。

      以下を~/.ssh/configに追記します。
      Host oracle-instance
          HostName 100.113.141.62
          IdentityFile ~/.ssh/oracle-ssh.key
          User opc
      
      保存した後に更新すると、以下のように表示されています。
    2. インスタンスへの接続
      矢印のようなものを押すと接続が可能です。

まとめ

意外と簡単にSSH接続することができました。
ほとんど無料でできるのもとても良いですし、Tailscaleを使うことによって外出先からでも安心して使うことができるのが良いですね。

ぜひ試してみてください。

Discussion