LoginSignup
1
0

EC2 Instance Connectを使用して特定のEC2インスタンスに接続できるユーザーを設定する

Posted at

EC2インスタンスを作成したりできるIAMユーザーでEC2 Instance Connectを使用したssh接続をする場合は、権限など特に気にしませんでしたが、特定のインスタンスだけに接続できるユーザーを作りたい場合もあると思います。

IAMの設定

ポリシーの作成

EC2 Instance Connectを使ってssh接続するための権限を設定した以下のようなポリシーを作ります。
ec2-instance-connect:OpenTunnelのResourceには、目的のEC2インスタンスに接続できるEC2 Instance ConnectエンドポイントのARNを入れ、ec2-instance-connect:privateIpAddressには、目的のEC2インスタンスのプライベートIPv4アドレスが含まれるものを入れてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Resource": "arn:aws:ec2:ap-northeast-1:XXXXXX:instance-connect-endpoint/eice-XXXXXX",
            "Condition": {
                "IpAddress": {
                    "ec2-instance-connect:privateIpAddress": "192.168.XXX.0/27"
                },
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                }
            }
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:osuser": "ec2-user"
                }
            }
        }
    ]
}

ユーザーの作成

新しくユーザーを作成し、先程作ったポリシーをアタッチします。
『セキュリティ認証情報』タブでアクセスキーを作成し、このアクセスキーでawsコマンドを実行します。

(おまけ)aws-cliのプロファイル追加

test-userという名前のプロファイルを追加して、先程作ったアクセスキーとシークレットキーを設定します。

aws configure --profile test-user

ssh接続

ec2-instance-connect ssh

aws ec2-instance-connect ssh --instance-id i-XXXXXX --profile test-user

open-tunnelを使ってsshする

EC2インスタンスを作成した時のキーペアを使用する場合

ssh -i ~/.ssh/鍵ファイル -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-XXXXXX --profile test-user' ec2-user@i-XXXXXX

独自の鍵を作って使用する場合

鍵を作成(my_key)

ssh-keygen -t rsa -f my_key -N ""

(パスワードを設定する場合は、-N ""を削除して実行してください。)

パブリックキーをインスタンスにプッシュする(send-ssh-public-key)

aws ec2-instance-connect send-ssh-public-key --instance-id i-XXXXXX --instance-os-user ec2-user --ssh-public-key file://my_key.pub --profile test-user

ssh接続(send-ssh-public-keyを実行して60秒以内に接続する)

ssh -i my_key -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-XXXXXX --profile test-user' ec2-user@i-XXXXXX

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0