我尝试启动ec2实例并通过ssh登录。我不小心删除了deafaul vpc,因此从头开始创建一个vpc来做到这一点。我创建了一个VPC,其10.0.0.0/16 VPC CIDR和10.0.0.0/24作为子网,并且还创建了一个网关。 A还修改了路由表。
10.0.0.0/16 local
0.0.0.0/0 igw-xxxx
我选择了一个ubuntu ami并在我的vpc中启动它并为该实例分配了一个弹性ip。
我有一个公共IP分配给我的实例,安全组也打开了端口22。我可以ping这个公共IP,但是当我尝试使用
进入ec2实例时ssh -i access.pem ubuntu@public.ip
我的连接超时,我在配置中遗漏了什么?
答案 0 :(得分:3)
最近,我玩过这样的配置。下面是我的笔记(这对我有用),检查你是否错过了什么。如果您可以ping实例IP,但安全组看起来有问题,但无法通过ssh进行连接。我也会检查不同的AMI。
创建VPC
$ vpcId=`aws ec2 create-vpc --cidr-block 10.0.0.0/24 --query 'Vpc.VpcId' --output text` $$ echo $vpcId
vpc-xxxxxxxx
在VPC中启用DNS解析
$ aws ec2 modify-vpc-attribute --vpc-id $vpcId --enable-dns-support "{\"Value\":true}"
$ aws ec2 modify-vpc-attribute --vpc-id $vpcId --enable-dns-hostnames "{\"Value\":true}"
为创建的VPC创建默认网关
$ internetGatewayId=`aws ec2 create-internet-gateway --query 'InternetGateway.InternetGatewayId' --output text` && echo $internetGatewayId
igw-yyyyyyy
$ aws ec2 attach-internet-gateway --internet-gateway-id $internetGatewayId --vpc-id $vpcId
在VPC中创建子网
$ subnetId=`aws ec2 create-subnet --vpc-id $vpcId --cidr-block 10.0.0.0/24 --query 'Subnet.SubnetId' --output text` && echo $subnetId
subnet-zzzzzzz
配置路由表
$ routeTableId=`aws ec2 create-route-table --vpc-id $vpcId --query 'RouteTable.RouteTableId' --output text` && echo $routeTableId
$ aws ec2 associate-route-table --route-table-id $routeTableId --subnet-id $subnetId
$ aws ec2 create-route --route-table-id $routeTableId --destination-cidr-block 0.0.0.0/0 --gateway-id $internetGatewayId
创建安全组并将端口22打开到任何连接
$ securityGroupId=`aws ec2 create-security-group --group-name ec2-dev-secgroup --description "security group" --vpc-id $vpcId --query 'GroupId' --output text` && echo $securityGroupId
sg-xyzyzyz
$ aws ec2 authorize-security-group-ingress --group-id $securityGroupId --protocol tcp --port 22 --cidr 0.0.0.0/0
创建ssh密钥
aws ec2 create-key-pair --key-name ec2-dev --query 'KeyMaterial' --output text > ~/.ssh/ec2-dev.pem
chmod 400 ~/.ssh/ec2-dev.pem
创建EC2实例
$ instanceId=`aws ec2 run-instances --image-id ami-ecd5e884 --count 1 --instance-type t2.micro --key-name ec2-dev --security-group-ids $securityGroupId --subnet-id $subnetId --associate-public-ip-address --query 'Instances[0].InstanceId' --output text`
ssh -i .ssh/ec2-dev.pem ec2-user@52.x.y.z