AWS Session Manager Walk Through

Yst@IT
4 min readJun 26, 2019

--

AWS Session Manager

Session manager is a feature under System Manager service. The main purpose of session manager is to save you trouble maintaining a bastion server where you use it to access servers in private network which are not public accessible. With session manager, you can access your EC2s within private subnet directly from AWS console or CLI.

There are couple prerequisites to compile. To simplify, they are
1. A role with AmazonEC2RoleforSSM privilege attached to the EC2 in private subnet.
2. SSM agent supported OS.
3. An SSM agent must be installed and started on the instance.

In addition, if your private subnet is not constructed with NAT Gateway/Instance, then you need to have VPC endpoints so that EC2 in your private subnet can communicate with System Manager. Therefore, you need in addition
4. Three VPC endpoints for linux EC2, four VPC endpoints for Windows EC2.
5. Security Group for VPC endpoints allowing EC2 to communicate with System Manager.

I will not walk through all the steps mentioned above such as creating role with necessary privilege or create EC2 or VPC etc but focus on the settings of VPC endpoints and other configurations.

Let’s start with making sure you have the S.G needed for VPC endpoints. For the inbound rule, the source is your EC2 subnet and the protocol is 443.

AWS Session Manager

Next, create VPC endpoints. Since I am using Linux server, so only three VPC endpoints are needed which are
1. ec2messages
2. ssm
3. ssmmessages

If you are using Windows, you would need ec2 endpoint too.
For more information, please visit here.

Creating VPC endpoints.

AWS Session Manager

Create three VPC endpoints with the same steps.

AWS Session Manager
AWS Session Manager

Choose your VPC and subnet where the EC2 lies and endpoints will deploy to the same subnet, so EC2 can communicate to System Manger through endpoints.

AWS Session Manager

This is the place where you must select the S.G created in the previous step.

AWS Session Manager

Finished view of all three VPC endpoints.

AWS Session Manager

Now let’s check on the EC2. Assuming an EC2 is already deployed in a private subnet which has no route to internet, with role of AmazonEC2RoleforSSM privilege attach to it.

AWS Session Manager
AWS Session Manager
AWS Session Manager

That’t is! If everything is setup correctly, you should be able to see the EC2 on the list of session manager.

AWS Session Manager
AWS Session Manager

There you go! Now you have login to the EC2 in a private subnet without the need of bastion server!

AWS Session Manager

I encounter quit a few errors while doing this lab. Following are few check points if you run into any problems or you can refer here.

  1. Make sure correct OS and SSM agent is used, installed and started.
  2. Assign correct S.G to VPC endpoints.
  3. Attach role with correct privileges to EC2.
  4. Make sure vpn endpoints are deployed into the correct subnet where EC2 lies.

Lastly, if your EC2 is in private subnet and is able to access internet with the help of NAT Gateway/Instance, all you need to do is attach a role with appropriate privilege to EC2 and that’s it. EC2 will communicate with System Manager through WAN, so you don’t need to setup VPC endpoints and S.G.

--

--

Yst@IT

Cloud Solution Architect, focusing on Oracle Cloud Infrastructure currently.