AWS上に実装したEC2にログインしたい場合、
パブリックに公開してグローバルIPで接続するか、VPN等で繋ぐ必要があるよね。
もしくは踏み台サーバを経由するか。
AWSのSystems Manager(SSM)を使えば、そのような余計な手間をかけずにブラウザ経由でEC2にログインすることができます。
WindowsでもLinuxでもどちらでも繋げられます。
ちなみにAzureだとBastionという踏み台サーバが必要。Oracle Cloudも同じ。
というわけで、早速試してみる。
よくある手法なので、ググればいくらでも情報が出てくるけど、
実際に試してみるってのはコレ大事。
SSM用IAMロール作成、IAMロール付与
まずはEC2に割り当てるIAMロールを作成する必要がある。
IAMロール画面に行き、作成をクリック。
エンティティはAWSのEC2を選択して、「次へ」をクリック。
許可ポリシーは「AmazonSSMManagedInstanceCore」を選択して、「次へ」をクリック。
任意のロール名を入力して、IAMロールを作成。
次にログインしたいEC2を選択して、アクション→セキュリティ→「IAMロールを変更」をクリック。
先ほど作成したIAMロールを選択して「IAMロールを更新」をクリック。
IAMロールが付与できたことを確認。
VPCエンドポイント作成(EC2がプライベートサブネットにある場合のみ)
EC2がパブリックセグメント(直接インターネットにアクセスできる)にある場合や
NATゲートウェイを使っている場合はこれは省略してもOK。
プライベートサブネットの場合はVPCエンドポイントを作ることをAWSは推奨している。
ただしVPCエンドポイントを作るとお金掛かるけどな!
NATゲートウェイもいくらかお金掛かるので、そこはケースバイケースで。
VPCの画面で、「エンドポイント」を開き、「エンドポイントを作成」をクリック。
任意の名前を入力して、サービスカテゴリは「AWSのサービス」を選択。
続けて対象となるサービスは「com.amazonaws.<リージョン名>.ssmmessages」を選択。
割り当てるVPCとサブネットを選択する。
※ここでは一つのサブネットしか選択してないけど、普通は全部選択w
セキュリティグループを指定する。
明示的にセキュリティを定義するのなら、インバウンド通信でhttpsを指定。
以上でエンドポイントの作成は完了。
同様にして以下、合計4つのVPCエンドポイントを作成する。
- com.amazonaws.<リージョン名>.ssmmessages
- com.amazonaws.<リージョン名>.ssm
- com.amazonaws.<リージョン名>.ec2
- com.amazonaws.<リージョン名>.ec2messages
フリートマネージャーでリモートログイン
あとはEC2にSSMエージェントをインストールする必要があるんだけど、
AWSが用意したAMIには標準で入っているので省略w
AWSコンソールからSystems Managerにアクセスし、「フリートマネージャー」を開く。
特に問題がなければマネージドノードにEC2インスタンスの一覧が表示される。
VPCエンドポイントを作った直後は表示されない場合があるので、その時はしばらく待つ。
EC2を選択して、ノードアクションからリモートログインが可能。
Linux系なら「ターミナルセッションを開始する」、
Windowsなら「リモートデスクトップとの接続」をそれぞれクリック。
Amazon Linuxの場合、特にパスワードを求められずにログインできた。
※Windowsの場合はユーザ名とパスワードを聞かれる。
ssm-userというユーザーでログインすることになり、rootやec2-userにsuすることも可能。
VPNに繋がなくてもサーバにアクセスできるのは便利
もうすべてのサーバログインはコレで良いんじゃないかと思うぐらい便利。
SSHやRDPのポートも開放する必要がないので、セキュリティ的にもかなり安心感がある。
唯一の欠点としては、ファイルのやり取りができないことかな。
テキストベースのコピペならLinuxもWindowsもどちらもできるが、
SCPやRDPを介したファイルのコピーができない。
そこだけはS3などのオンラインストレージを使うしかない。
ここはAWSのアップデートを期待するしかない。
試しで作っただけなら、VPCエンドポイントを削除するのを忘れずに!
エンドポイント1つあたり月2,000円もしないぐらいだけど、
それが4つもあるので個人利用だとかなり痛手になるw
0 件のコメント:
コメントを投稿