Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services ssh身份验证无法从使用boto3创建的ami启动的aws ec2实例_Amazon Web Services_Ssh_Boto_Boto3_Ec2 Ami - Fatal编程技术网

Amazon web services ssh身份验证无法从使用boto3创建的ami启动的aws ec2实例

Amazon web services ssh身份验证无法从使用boto3创建的ami启动的aws ec2实例,amazon-web-services,ssh,boto,boto3,ec2-ami,Amazon Web Services,Ssh,Boto,Boto3,Ec2 Ami,我有一个现有的AWS Ubuntu EC2实例(实例_1),使用我自己的私钥/公钥,通过公共IP地址进行远程ssh访问。我使用控制台从这个实例创建一个AMI,然后使用这个AMI启动一个新的EC2实例(instance_2)。远程ssh到实例_2(通过自己的公共IP地址)的工作方式与实例_1完全相同 然后我使用boto3创建一个AMI而不是控制台,然后启动另一个EC2实例(instance\u3)。实例3上的ssh身份验证失败(权限被拒绝) 知道当使用boto3而不是控制台创建AMI时行为不同的原

我有一个现有的AWS Ubuntu EC2实例(
实例_1
),使用我自己的私钥/公钥,通过公共IP地址进行远程ssh访问。我使用控制台从这个实例创建一个AMI,然后使用这个AMI启动一个新的EC2实例(
instance_2
)。远程ssh到
实例_2
(通过自己的公共IP地址)的工作方式与
实例_1
完全相同

然后我使用boto3创建一个AMI而不是控制台,然后启动另一个EC2实例(
instance\u3
)。
实例3
上的ssh身份验证失败(权限被拒绝)

知道当使用boto3而不是控制台创建AMI时行为不同的原因吗?boto3使用的凭据允许管理员使用策略进行完全访问
arn:aws:iam::aws:policy/AdministratorAccess

创建AMI的代码如下:

ec2_client = boto3.client('ec2', region_name=region)
response = ec2_client.create_image(InstanceId=instance_id, Name=ami_name)
new_image_id = response['ImageId']

要诊断问题,首先检查您尝试连接的EC2实例的密钥对


如果所有操作都失败(这很罕见),您可以分离实例并将其转入标准卷,然后从另一个实例装载它以验证或替换
~/.ssh/authorized_keys

请检查关联的密钥对。您可以通过将实例_3分离为实例来检查其ssh密钥,然后从另一个实例装载卷。这将告诉你所有的故事。谢谢@mootmoot这对发现我的问题非常有帮助。原来我把错误的“实例id”传递给了Bot3!请将您的评论作为答案发布,以便我可以接受。