tailscaleを使って、会社のオフィスから自宅のRaspberry Pi にSSH接続する

tailscaleを使って、自宅のデバイスにSSH接続してみました。 これで出社時の作業効率が上がります。
2024.05.17

はじめに

現在、出社とリモートのハイブリッドで働いていますが、出社時に自宅のRaspberry Pi等のデバイスに接続したい場面が多々あります。
デバイスをオフィスに持って行くことも可能ですが、持ち運びが手間ですし、センサーなどを取り付けて電子工作している場合は自宅から動かしたくありません。
先日リリースされたRaspberry Pi Connectでも、インターネット経由でアクセス可能ですが、やはりSSHでアクセスできると作業が捗ります。
この記事では、tailscaleを利用して簡単かつ安全にSSH接続する方法を紹介します。

tailscaleとは?

tailscaleは、簡単に設定できるVPNソリューションで、デバイス間の安全な接続を提供します。
Zero Trustネットワークを実現し、NATトラバーサルを自動で行うため、複雑なネットワーク設定が不要です。

今回使用するプランは「Personal」で、個人が個々のデバイスを安全に接続するためのプランです。
このプランは無料で提供されており、以下の特徴があります。

  • 価格: 無料
  • ユーザーとデバイス: 最大3人のユーザーと最大100台のデバイスをサポート
  • 機能:
    • ピアツーピア接続
    • MagicDNS
    • ネットワーク、リソースレベル、および属性ベースのアクセス制御ポリシー(ACL)
    • ユーザー承認
    • 任意のIdP(アイデンティティプロバイダ)とのSSO

参考:tailscale pricing

実際に設定してみる

必要なもの

今回必要なものは以下の通りです。
ご自身の環境に合わせて、適宜用意してください。

  • tailscaleアカウント
  • 接続元のPC(オフィス)
    • 今回はMacBook(macOS Sonoma)を使用
  • 接続先のRaspberry Pi(自宅)

では順を追って、設定を実施していきます。

1.tailscaleアカウントのサインアップする

まずは、tailscaleの公式サイトにアクセスし、サインアップする必要があります。

  1. tailscale公式サイトにアクセスします。
  2. Get Startedをクリックします。
  3. サインアップにはApple、Google、Microsoft、GitHub、Okta、OneLogin、またはその他のサポートされている SSO ID プロバイダーアカウントが必要です。
    適宜サインアップを行なってください。

2.接続元のPC(Mac)にtailscaleをインストール

次に、接続元のPCにtailscaleをインストールします。
macOSの場合は以下の手順となります。

  1. App Store からtailscale をダウンロードします。
  2. アプリを起動して、VPN構成をインストールします。
    Get StartedAllow VPN Configuration許可の順で進みます。
  3. Sign in to your network で進み、ブラウザからSSO IDプロバイダーにサインアップします。

サインアップ後にConnectを押下すればログイン成功です。

3.接続先のRaspberry Piにtailscaleをインストール

次に、接続先のRaspberry Piにtailscaleをインストールします。
Raspberry PiにSSHもしくはRaspberry Pi Connet、VNCを使ってターミナルを起動します。
以下をコマンドを実行し、Installation complete!となればOKです。

$ curl -fsSL https://tailscale.com/install.sh | sh
Installing Tailscale for debian bookworm, using method apt
<省略>
Installation complete! Log in to start using Tailscale by running:

sudo tailscale up

インストールが完了したら、tailscaleを起動します。
このコマンドを実行するとURLが発行されるので、ブラウザで開き先ほどと同様にサインアップすればOKです。
私の場合は、Macのブラウザ上でサインアップを実施しました。
サインアップが完了するとSuccessと表示され、Raspberry Piがtailscaleネットワークに追加されます。

$  sudo tailscale up

To authenticate, visit:

        https://login.tailscale.com/a/xxxxxxxxxxxxxxxx

Success.

4.SSH接続

接続先のRaspberry Piのtailscale IPアドレスを確認します。
Admin consoleにアクセスするとデバイス毎に割り振られたIPアドレスが確認できます。

<tailscale_IP>には、先ほど確認した接続先のRaspberry Piのtailscale IPアドレスを入力し、SSH接続を行います。

$ ssh pi@<tailscale_IP>
pi@raspberrypi:~ $

手順通りに設定できていれば、SSH接続が可能なはずです。

おまけ:tailscale SSHの利用

tailscale SSHを利用することで、通常のSSH接続と同様に簡単に接続できますが、認証と暗号化のプロセスがtailscaleによって強化されます。具体的には、tailscale SSHはポート22を引き継ぎ、tailscaleネットワークからのSSH接続を処理します。tailscaleはWireGuardを使用して接続を認証および暗号化し、tailscaleノードキーを使用します。SSHクライアントとサーバーは依然として暗号化されたSSH接続を確立しますが、追加の認証は行われません。この仕組みにより、セキュリティが向上し、設定が簡素化されます。 引用:Tailscale SSH

コマンド実行時にオプションをつけることで、tailscale SSHを利用することができます。

$ sudo tailscale up --ssh

Admin console上でSSHのマークが付いていればOKです。

後は従来と同じようにSSHコマンドを実行すれば問題ありません。

まとめ

tailscaleを使用することで、接続元のMacから接続先のRaspberry Piに簡単かつ安全にSSH接続することができます。
設定もシンプルな事に加え、無料枠でも十分な機能が備わっているので、ぜひ使ってみてください。
また、tailscale SSHを利用することで、さらに簡単に安全な接続を実現できます。
SSHに限らずSMBでNAS等に接続することも可能です。
どなたかのお役に立てれば幸いです。

参考リンク