このタグの記事
Aws
EC2インスタンスにAWS EC2コンソール経由でアクセスしてみる
みなさん、こんにちは。 小林です。 早いもので、ブログを書き出してから1年が経ちました。 技術系の記事は適当なことは書けない(書きたくない)ので、元々裏どりを丁寧にする方ではありましたが、より丁寧にするようになったと実感しています。 それでは、今回のブログの内容はこちらです!! つい先日、出先で突然、AmazonLinuxを触りたくなってしまったのです。 手持ちにはiPadがありましたがSSH接続できる環境が整っていなくて、困ってしまいました。 みなさんもそんな経験ありますよね? そんな時に便利なのが、EC2 Instance Connectという機能です。 AWSコンソールからサーバにアクセスし、CLIにて操作することが可能になります。 C2 Instance Connect を使用した Linux インスタンスへの接続 今回は、EC2 Instance Connectを使用して、EC2インスタンスにアクセスできるようにするまでの手順を紹介します。 EC2 インスタンスを用意する 今回はほぼデフォルトの設定のまま、EC2インスタンスを起動させます。 リージョンは「オレゴン(us-west-2)」を使用します。 AMI 今回は、AmazonLinuxを使用したいので、AmazonLinux2用のAMIを使用します。 ちなみに、EC2 Instance Connectを使用できるOSに制限があり、以下のOSである必要があります。 以下に挙げた、サポートされている Linux ディストリビューションに対し、EC2 Instance Connect をインストールできます。 Amazon Linux 2 (すべてのバージョン) Ubuntu 16.04 以降 参考:EC2 Instance Connect セットアップ#Limitations インスタンスタイプ 特に希望がなければ、無料枠のt2.microで問題ありません。 インスタンスの詳細 ブラウザからEC2 Instance Connectを使用するためには、パブリックIPv4アドレスが必要になります。 ユーザーがインターネット経由でインスタンスにアクセスする場合、インスタンスにパブリック IP アドレスがあり、パブリックサブネット内にある必要があります。詳細については、Amazon VPC ユーザーガイドの「インターネットアクセスを有効にする」を参照してください。 参考:EC2 Instance Connect セットアップ#タスク 1: インスタンスへのネットワークアクセスを設定する ネットワーク関連の項目に以下を設定してください。 サブネット:パブリックなサブネット デフォルトのものを使用するのであれば、どれでも可 パブリックなサブネットに関しては、以下にて言及していますので参考までに AWS 踏み台サーバ(ネットワーク)の構築 自動割り当てパブリックIP:有効 もちろん、後から設定することも可能です。 ストレージの追加、タグの追加 この項目は特に指定がないので、デフォルトのまま使用します。 セキュリティグループの設定 EC2 Instance Connectを使用するにあたり、必要な設定は後述しますので、ご自身の必要な設定にしてください。 今回はブログ用なので、新しく作成し、デフォルトで設定されているSSH用のルール(0.0.0.0/0)も削除してしまいます。 これで、使用するインスタンスの準備は一旦完了です。 EC2 Instance Connectをインストールする 使用するインスタンスにEC2 Instance Connectをインストールする必要があります。 が、以下の条件を満たす場合、すでにインストールされているので、今回はスキップします。 それ以前のOSを使用する場合、下記のリンク先に手順が記載されていますので、そちらを参照してください。 以下に挙げる AMI は、EC2 Instance Connect に事前インストールされており、いずれかを使用してインスタンスを起動する場合には、このタスクはスキップできます。 Amazon Linux 2 2.0.20190618 以降 Ubuntu 20.04 以降 参考:EC2 Instance Connect セットアップ#タスク 2: (条件付き) EC2 Instance Connect をインスタンスにインストールする EC2 Instance Connect CLIをインストールする ブラウザを経由せず、自身のコンピュータを利用する場合には、EC2 Instance Connect CLIが必要になりますが、今回はブラウザからアクセスしたいので、スキップします。 詳細手順は、以下のリンク先を参考にしてください。 参考:EC2 Instance Connect セットアップ#タスク 3: (オプション) EC2 Instance Connect CLI をお使いのコンピューターにインストールする セキュリティグループの設定を行う ブラウザからアクセスする場合、EC2 Instance ConnectというサービスからのSSHでのアクセスを許可する必要があります。 (Amazon EC2 コンソールのブラウザベースのクライアント) インスタンスに関連付けられているセキュリティグループで、このサービスの IP アドレス範囲からのインバウンド SSH トラフィックが許可されていることを確認します。 参考:EC2 Instance Connect セットアップ#タスク 1: インスタンスへのネットワークアクセスを設定する SSH接続の許可 先ほどEC2に設定したセキュリティグループを開き、インバウンドに以下の設定を追加します。 ソースに設定する値は、以下から取得することが可能です。 https://ip-ranges.amazonaws.com/ip-ranges.json 参考:AWS IPアドレスの範囲 上記にアクセスするとJSON形式で記述されていますが、全リージョン、全サービス分が記述されているため、以下の項目で絞り込みます。 region: us-west-2 service: EC2_INSTANCE_CONNECT 絞り込んだら、ip_prefixに設定されている値をセキュリティグループのソースに設定します。 EC2 Instance Connectを利用するための許可を与える EC2 Instance Connectを利用するには、利用したいIAMユーザに対して、許可を与える必要があります。 IAMポリシーの設定 以下のポリシーを利用させたいIAMユーザにアタッチしてください。 サービス アクション リソース リクエスト条件 備考 EC2 Instance Connect SendSSHPublicKey 対象のインスタンス 条件キー: ec2:osuser限定条件: リクエストの任意の値演算子: StringEquals値: ec2-user リクエスト条件には、接続したいユーザ名やそのほかの条件を追加します { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:<リージョン>:<アカウントID>:instance/<インスタンスID>", "Condition": { "ForAnyValue:StringEquals": { "ec2:osuser": ["ec2-user"] } } } ] } 参考:EC2 Instance Connect セットアップ#タスク 4: EC2 Instance Connect の IAM アクセス許可を設定する これで準備は万端です。早速、接続してみましょう。 EC2 Instance Connectを使用してみる 対象のEC2インスタンスを選択し、接続ボタンを押下します。 EC2 Instance Connectを選択し、ユーザ名に対象のユーザ名を指定します。 そして、接続ボタンを押下します。 あら、不思議。EC2インスタンスにブラウザ経由でアクセスできるようにになりました。 インターネットに接続さえできれば、EC2インスタンスにアクセスし操作することができるようになりました。 これで、急にAmazonLinuxを触りたくなっても問題ありません。 他にも「セッションマネージャー」や「EC2シリアルコンソール」といった機能があるので、どういった機能なのかは今後調査していきたいと思います。
AWS 踏み台サーバ(ネットワーク)の構築
はじめまして。 本年度入社しました小林と申します。 城に魅了されてしまったエンジニアです。 どうぞ、よろしくお願いします。 今回はちょうど業務でAWSに触れる機会があったため、ネットワークの設定に関して紹介していきます。 要件 以下のような環境を構築します。 踏み台サーバ(Amazon EC2) インターネットから直接アクセス可能 Webサーバ(Amazon EC2)(※今回Webサーバとして公開することは考慮しない) インターネットから直接アクセス不可 踏み台サーバからのみアクセス可能 踏み台サーバとWebサーバは異なるサブネットに所属 サブネットはそれぞれ異なるAZに存在 ネットワークの構成図はこのようになります。 ネットワークの構築 はじめに 用件に見合う構成にするために、以下のサービスを利用します。 Amazon VPC-VPC Amazon VPC-サブネット Amazon VPC-インターネットゲートウェイ Amazon VPC-ルートテーブル Amazon VPC-セキュリティグループ ※VPCは以下の設定で作成し、これら以外はデフォルトの設定を使用することを前提とします。 VPC VPC ID vpc-XXXXXXX IPv4 CIDRブロック 10.125.0.0/16 IPv6 CIDRブロック IPv6 CIDRブロックなし テナンシー デフォルト タグ Name TestVPC サブネット パブリックサブネット(インターネットからアクセス可能なサブネット) 以下の設定でサブネットを作成します。 名前タグ TestPublicSubnet VPC vpc-XXXXXXX アベイラリティゾーン※ us-east-2a IPv4 CIDR ブロック 10.125.1.0/24 ※リージョンはオハイオ(us-east−2)を利用しています。 このままだと、EC2インスタンスを起動した際にパブリックIPが自動で割り当てられないため、自動割り当ての設定を行います。(EC2インスタンスの作成時に割り当てることも可能です。) 該当のサブネットを選択→アクション→「自動割り当てIP設定の変更」を押下 「IPv4 の自動割り当て」をチェック→保存 プライベートサブネット(インターネットからアクセス不可なサブネット) 以下の設定でサブネットを作成します。 名前タグ TestPrivateSubnet VPC vpc-XXXXXXX アベイラリティゾーン※ us-east-2b IPv4 CIDR ブロック 10.125.2.0/24 ※リージョンはオハイオ(us-east−2)を利用しています。 インターネットゲートウェイ VPCの内部とインターネット間の通信を許可するために、インターネットゲートウェイを作成します。 インターネットゲートウェイ インターネットゲートウェイ自体には細かい設定は存在しません。 名前タブ TestIG 作成後、VPCと関連付けます。 アクション→「VPCにアタッチ」を押下 「使用可能なVPC」に対象のVPC(TestVPC)を選択→「インターネットゲートウェイのアタッチ」を押下 これでVPCは作成したゲートウェイ経由でインターネットと通信ができるようになる入り口が用意されました。 ルートテーブル ゲートウェイは入り口に過ぎず、ゲートウェイへのルートを用意する必要があり、そのためにルートテーブルを用意する必要があります。 ルートテーブル 以下の設定でルートテーブルを作成します。 名前タグ TestPublicRouteTable VPC vpc-XXXXXXX 作成したルートテーブルにインターネットゲートウェイを経由する設定を追加します。 対象のルートテーブルを選択→「ルートタブ」を選択→「ルートの編集」を押下 ルートに以下の設定を追加 送信先 0.0.0.0/0 ターゲット 作成したインターネットゲートウェイ 作成したルートテーブルにサブネットを関連付けします。 対象のルートテーブルを選択→「サブネットの関連付け」を選択→「サブネットの編集」を押下 パブリックサブネットのみを選択→保存 セキュリティグループ 最後にEC2への接続を許可するためにセキュリティグループを作成します。 セキュリティグループ 踏み台サーバ用のセキュリテイグループ 以下の設定でセキュリティグループを作成します。 基本的な詳細 セキュリティグループ名 TestSGForBastion 説明 ssh from internet to bastion VPC vpc-XXXXXXX インバウンドルール/アウトバウンドルール タイプ プロトコル ポート範囲 ソース インバウンド SSH TCP 22 0.0.0.0/0 アウトバウンド すべて すべて すべて 0.0.0.0/0 これでインターネット側からのSSH接続を許可しました。 ※必要に応じて接続元を絞ることをお勧めします。 この設定ではどこからでもアクセスできてしまいます。 Webサーバ用のセキュリティグループ 以下の設定でセキュリティグループを作成します。 基本的な詳細 セキュリティグループ名 TestSGForWebServer 説明 ssh from bastion to web server VPC vpc-XXXXXXX インバウンドルール/アウトバウンドルール タイプ プロトコル ポート範囲 ソース インバウンド SSH TCP 22 踏み台サーバ用のSG アウトバウンド すべて すべて すべて 0.0.0.0/0 ソースに対象のセキュリティグループを指定することで、そのセキュリティグループが設定されているEC2インスタンスからのアクセスを許可することができます。 もちろん、IPアドレスで指定することも可能です。 ネットワーク側の設定は以上になります。 これらの設定をEC2インスタンスに関連付けることで、踏み台サーバからのSSHのみを受け付ける環境が完成します。 EC2 インスタンス サブネット セキュリティグループ 踏み台サーバ パブリックサブネット 踏み台サーバ用のセキュリティグループ Webサーバ プライベートサブネット Webサーバ用のセキュリティグループ まとめ 肝となるのは、以下の2点かと思います。 私自身はこの設定が漏れていたことにより、うまく接続することができませんでした。 ルートテーブルとインターネットゲートウェイの関連付け セキュリティグループのソースにセキュリティグループを指定 補足 セキュリティグループに関してなのですが、実はWebサーバ用のセキュリティグループで設定した内容は、VPCを作成した際に作成されるデフォルトのセキュリティグループを指定することで実現が可能です。 しかし、デフォルトのセキュリティグループを使用する場合は、踏み台サーバ、Webサーバ双方に設定する必要があり、双方向の接続が可能になってしまうことに注意が必要です。 セキュリティグループの基本
