SSHでEC2に接続し、EC2を踏み台サーバーとしてRDSに接続する時の手順例です。
接続イメージ
SSHでEC2に接続し、EC2を踏み台サーバーとしてRDSに接続します。
前提
以下の作業はrootユーザではなくIAMユーザで行う
VPC
まず、EC2とRDBを仮想ネットワーク内に定義するので、その仮想ネットワークVPSを設定します。
VPC→VPCの作成をします VPC名(なんでもおk)と仮想ネットワークのIP(ここでは10.0.0.0/16)を指定します
VPC名(例) | 仮想ネットワークのIP |
---|---|
test-ec2-rdb-vpc | 10.0.0.0/16 |
サブネット
EC2は外部ネットワークからアクセスできるようにし、RDBはVPC内のアクセスのみ許可する。ようなネットワークを構築します。publicネットワークとprivateネットワークを作成します
サブネット→サブネットの作成で以下の3つを1つずつ作成します
サブネット名(なんでもおk) | VPC | アベイラビリティーゾーン | 使用用途 |
---|---|---|---|
subnet-public-1a | 作成したVPC | ap-northeast-1a | WEBサーバ(EC2)用の外部ネットワークから繋ぐネットワーク |
subnet-private-1a | 作成したVPC | ap-northeast-1a | RDB用の内部ネットワーク |
subnet-private-1c | 作成したVPC | ap-northeast-1c | 直接は未使用だが、RDB作成時に必要 |
EC2
ネットワークを作成できたら、次は踏み台にするインスタンス(EC2)を作成します
踏み台にするWEBサーバインスタンスを作成します。
EC2→インスタンスの作成最初の画面でVPSとサブネットを指定します
VPC | サブネット |
---|---|
作成したVPC | subnet-public-1a(パブリック用サブネット) |
セキュリティーグループ設定
この例ではSSHは全てのアドレスを許可していますが、絶対に本番環境では行ってはいけません
インスタンス作成途中にセキュリティーグループの作成があります。
ここでSSHを繋ぐ時の許可するIPを指定します
タイプ | ソース |
---|---|
SSH | 自分や会社のIP |
SSHで接続
インスタンス作成時にキーを取得します。この時.pemがインスタンス接続時のキーとなるため必ず取得します。
ターミナルからダウンロードしたフォルダに行き、SSHに接続
$ssh -i xxxxxxx.pem ec2-user@yyy.yyy.yyy.yyy
これだけだと権限が大きすぎるエラーとなる
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'test-aws-ec2.pem' are too open. Load key "test-aws-ec2.pem": bad permissions ec2-user@3.112.251.187: Permission denied (publickey).
400に変えてあげることで、突破できます。(読込のみとする)
$chmod 400 xxxxxxxx.pem
RDB
RDBの作成を行いますが、すぐには作成できなく、下準備が必要です
DB サブネットグループ→パラメータグループ→RDBの作成
の順で作成します。
DB サブネットグループ
RDB作成の準備としてサブネット作成です。
RDBダッシュボード→サブネットグループ→サブネットグループの作成で以下を設定します
VPS | アベイラビリティーゾーン | サブネット |
---|---|---|
作成したVPS | (東京の場合2つ) | プライベート用サブネット2つ |
RDBパラメータグループ
次にRDBパラメータグループです
RDBダッシュボード→パラメータグループ→サブネットグループの作成で以下を設定です。
パラメータグループファミリー |
---|
作成するDBとバージョン(例:mysql 5系) |
EC2でVPC セキュリティグループ
ここでRDB向けのセキュリティーグループを新規で作成します EC2→セキュリティグループです
タイプ | ポート | 送信元 |
---|---|---|
MySQL/Aurora(3306) | 3306 | 10.0.0.0/16 |
RDB作成
ここまででようやくRDB作成できます
RDBダッシュボード→データベース→データベース作成
色々設定項目がありますが、以下を設定すればひとまずおkです。
DB クラスター識別子 | マスターユーザー情報 | Virtual Private Cloud (VPC) | サブネットグループ | VPC セキュリティグループ |
---|---|---|---|---|
DB名(なんでも) | ユーザ名、パスワード | 作成したVPC | 作成したサブネット | 作成したRDB用のセキュリティグループ |
SSH確認
ここまで設定することでRDBに接続できます
EC2接続
SSHからEC2接続します
$ssh -i xxxxxxx.pem ec2-user@yyy.yyy.yyy.yyy
Last login: Sat Dec 28 11:52:33 2019 from 103.5.142.234 __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
MySQLインストール
EC2にMySQLをインストールします
$ sudo yum update
$ sudo yum install mysql
接続
RDBに接続します ホスト名はAWSのRDB情報のエンドポイントです
$ mysql -h xxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u yourName -p
パスワード入力します
mysql>
が出たら接続できました。お疲れ様でした。
[ec2-user@test-etc-rdb-web-1 ~]$ mysql -h hogehoge.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 268 Server version: 5.7.22-log Source distribution Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>