我已经创建了一个 EC2 实例。
我已检查安全组、子网 - 入站流量以及公共(public) IP 和 DNS 条目,但仍然无法远程连接。从本地计算机访问它以及尝试使用 AWS 在线 ssh 内容方法连接到它时,我不断收到以下错误:
Error: Operation timed out
我也尝试过 ping 服务器,但也失败。
您能帮我远程连接 EC2 实例吗?
我正在分享实例描述命令的输出,以便您可以帮助我。此实例或配置有什么问题?
描述命令输出:
"Reservations": [
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-0d6621c01e8c2de2c",
"InstanceId": "i-0ba33f0cdd3e555fd",
"InstanceType": "t2.micro",
"KeyName": "jump-key",
"LaunchTime": "2020-04-10T05:04:23.000Z",
"Monitoring": {
"State": "disabled"
},
"Placement": {
"AvailabilityZone": "us-west-2a",
"GroupName": "",
"Tenancy": "default"
},
"PrivateDnsName": "ip-10-0-1-250.us-west-2.compute.internal",
"PrivateIpAddress": "10.0.1.250",
"ProductCodes": [],
"PublicDnsName": "ec2-18-236-76-162.us-west-2.compute.amazonaws.com",
"PublicIpAddress": "18.236.76.162",
"State": {
"Code": 16,
"Name": "running"
},
"StateTransitionReason": "",
"SubnetId": "subnet-00532a34e49b7f98f",
"VpcId": "vpc-01cd162cf4afcb926",
"Architecture": "x86_64",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"AttachTime": "2020-04-10T05:04:24.000Z",
"DeleteOnTermination": true,
"Status": "attached",
"VolumeId": "vol-00907015e8b1b54a4"
}
}
],
"ClientToken": "",
"EbsOptimized": false,
"EnaSupport": true,
"Hypervisor": "xen",
"NetworkInterfaces": [
{
"Association": {
"IpOwnerId": "amazon",
"PublicDnsName": "ec2-18-236-76-162.us-west-2.compute.amazonaws.com",
"PublicIp": "18.236.76.162"
},
"Attachment": {
"AttachTime": "2020-04-10T05:04:23.000Z",
"AttachmentId": "eni-attach-0f18a9b5254184a11",
"DeleteOnTermination": true,
"DeviceIndex": 0,
"Status": "attached"
},
"Description": "Primary network interface",
"Groups": [
{
"GroupName": "default",
"GroupId": "sg-0efd8084b6328f481"
}
],
"Ipv6Addresses": [],
"MacAddress": "06:09:8f:cf:5d:e8",
"NetworkInterfaceId": "eni-048052fc271148c16",
"OwnerId": "811886212371",
"PrivateDnsName": "ip-10-0-1-250.us-west-2.compute.internal",
"PrivateIpAddress": "10.0.1.250",
"PrivateIpAddresses": [
{
"Association": {
"IpOwnerId": "amazon",
"PublicDnsName": "ec2-18-236-76-162.us-west-2.compute.amazonaws.com",
"PublicIp": "18.236.76.162"
},
"Primary": true,
"PrivateDnsName": "ip-10-0-1-250.us-west-2.compute.internal",
"PrivateIpAddress": "10.0.1.250"
}
],
"SourceDestCheck": true,
"Status": "in-use",
"SubnetId": "subnet-00532a34e49b7f98f",
"VpcId": "vpc-01cd162cf4afcb926",
"InterfaceType": "interface"
}
],
"RootDeviceName": "/dev/xvda",
"RootDeviceType": "ebs",
"SecurityGroups": [
{
"GroupName": "default",
"GroupId": "sg-0efd8084b6328f481"
}
],
"SourceDestCheck": true,
"VirtualizationType": "hvm",
"CpuOptions": {
"CoreCount": 1,
"ThreadsPerCore": 1
},
"CapacityReservationSpecification": {
"CapacityReservationPreference": "open"
},
"HibernationOptions": {
"Configured": false
},
"MetadataOptions": {
"State": "applied",
"HttpTokens": "optional",
"HttpPutResponseHopLimit": 1,
"HttpEndpoint": "enabled"
}
}
],
"OwnerId": "811886212371",
"ReservationId": "r-0e1cc9591c1fd51ff"
}
]
}
最佳答案
要检查的内容是:
- EC2 实例正在运行 Linux(您的 AMI 是 Amazon Linux 2,看起来不错)
- 该实例位于公有子网中,定义为其路由表指向互联网网关(未知)
- 安全组允许端口 22(未知)上的入站访问
- 默认网络 ACL(看起来不错!)
- 通过公共(public) IP 地址连接(看起来不错!)
- 您的网络允许出站 SSH 访问(通过尝试替代网络进行测试,例如工作网络、家庭网络或通过手机连接的网络)
连接超时表示没有网络连接。
在 80% 的情况下,原因是安全组(您没有在问题中显示)。
如果做不到这一点,我会说该实例可能位于私有(private)子网中。
Amazon VPC 网络默认为私有(private)网络。要将它们连接到互联网,您需要连接互联网网关。然后,为了使子网成为“公共(public)”子网,它需要一个指向互联网网关的路由表配置。或者,您可以使用已配置公有子网的默认 VPC。
如果您的默认 VPC 不存在,可以通过创建默认 VPC(在“操作”菜单中)重新创建它。
更新:以下是在新 VPC 中启动公开可用的 Amazon EC2 实例的步骤(只是为了避免现有 VPC 出现任何潜在问题)。
- 转至VPC 管理控制台
- 点击启动 VPC 向导
- 默认情况下将创建“具有单个公有子网的 VPC”,因此请点击选择
- 为其指定一个名称,然后点击创建 VPC
- 转到EC2管理控制台
- 点击启动实例,然后:
- 第 1 步:选择 Amazon Linux 2 AMI
- 第 2 步:使用默认值
- 第 3 步:自动分配公共(public) IP:启用
- 点击审核并启动(将其他所有内容保留为默认值)
启动实例时,系统会要求您选择 key 对。确保您拥有所选 key 对的私有(private)部分。
实例运行后,通过以下方式连接到它:
ssh -i keypair.pem ec2-user@IP-ADDRESS
如果上述内容适合您,那么只需比较上述配置和您当前配置之间的差异即可。尝试找出不同之处,这可能是实例配置或 VPC/子网配置。
如果上述方法对您不起作用,那么您的网络可能不允许出站 SSH 连接。在不同的网络上尝试(例如通过系留电话)来测试这一点。
关于amazon-web-services - 无法通过 SSH 连接到 ec2 实例(浏览器和 cli),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61181312/