🧇

Raspberry Piに外部からセキュアに接続する

2023/03/24に公開

今回のユースケースとして出先のPCから自宅のRaspberry Pi(以下「ラズパイ」と略します)にセキュアにアクセスするためにはどうしたらいいかと疑問に思いやってみることにしました。

どうやってやるのか

結論からいうと、AWS Systems Manager(以下「SSM」と略します)を用いて、ラズパイに接続できるみたいです。
こちらの記事を参考にさせていただきました。ありがとうございます。

技術スタック

RaspberryPi上でUbuntu 22.04 LTS Desktopを動かしています。

手順

記事やドキュメントを参考に手順をまとめてみました。

  1. AWSでSSM用のIAMサービスロールを作成する
  2. AWSでマネージドノードのアクティベーションを作成する
  3. ラズパイでSSMエージェントをインストールする
  4. SSMからラズパイに接続する

案外簡単そうですね、、、。
詳細を書いていきます。

AWSでSSM用のIAMサービスロールを作成する

アクティベーションを作成するためにサービスロールを以下内容で作成しました

項目 内容
名称 SSMInstanceProfile(任意の名前)
ポリシー AmazonSSMManagedInstanceCore(AWS 管理ポリシー)
信頼関係 ssm.amazonaws.com

AWSでマネージドノードのアクティベーションを作成する

ラズパイにSSMエージェントをインストールするためにアクティベーションを作成しておく必要があるのでこちらは以下内容で作成する

項目 内容
インスタンス制限 1(任意の数)
IAMロール SSMInstanceProfile(上記で作成したロール名)
デフォルトのインスタンス RaspberryPi(任意の名前)

モーダル

ラズパイ上でSSMエージェントをインストールする

ラズパイ上で上記の手順でメモをした<activation-code>と<activation-id>を用いてSSMエージェントをインストールします。
▼以下はUbunutのパターンです

mkdir /tmp/ssm
curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb
sudo service amazon-ssm-agent stop
sudo -E amazon-ssm-agent -register -code "<activation-code>" -id "<activation-id>" -region "region" 
sudo service amazon-ssm-agent start

これで設定は完了です。

接続手順

Session Managerのマネージドインスタンスのところでインスタンスを選択し、アクション -> Start Sessionを選択すると、ブラウザ上でターミナルの画面が表示されます。

SSH経由であればポートを開放しなくてはならないので、セキュリティ面でとても不安ですが、SSMを利用すれば簡単かつ、セキュアに接続することができました。

Discussion