Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
Linux EC2-无法使用EC2用户登录_Linux_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

Linux EC2-无法使用EC2用户登录

Linux EC2-无法使用EC2用户登录,linux,amazon-web-services,amazon-ec2,Linux,Amazon Web Services,Amazon Ec2,我有一个AWS微实例,到目前为止,我使用ec2用户登录该实例没有问题。我更改了ec2用户的一些权限(基本上删除了它添加到的www组,并再次添加了该组)。现在我被锁在实例之外。我得到的错误是: 已断开连接:没有支持的身份验证方法可用(已发送服务器:公钥) 我检查了以下各项,似乎一切都准备就绪: 我的IP在AWS安全组中更新 我的密钥(.ppk)与我已使用数月的密钥相同 我的安全组已启用80和442 请帮忙。。。这真的让我很烦恼 不确定你是否在9个月前看到过这个问题,但看起来有人也有类似的问题。如果

我有一个AWS微实例,到目前为止,我使用ec2用户登录该实例没有问题。我更改了ec2用户的一些权限(基本上删除了它添加到的www组,并再次添加了该组)。现在我被锁在实例之外。我得到的错误是:

已断开连接:没有支持的身份验证方法可用(已发送服务器:公钥)

我检查了以下各项,似乎一切都准备就绪:

  • 我的IP在AWS安全组中更新
  • 我的密钥(.ppk)与我已使用数月的密钥相同
  • 我的安全组已启用80和442

  • 请帮忙。。。这真的让我很烦恼

    不确定你是否在9个月前看到过这个问题,但看起来有人也有类似的问题。如果您使用的是IAM,请确保您的内联策略允许EC2访问。

    您从SSH服务中收到一个错误,因此您可以确保这不是防火墙问题

    很难确切地知道您做了什么,但是您可能无意中中断了对存储允许的公钥的文件的访问
    ~/.ssh/authorized_keys
    。此文件只能在权限非常有限的情况下使用

    有一种方法可以从中恢复,但它确实涉及几个步骤

  • 开始一个新的实例,可以是微型的,它只会持续一段时间
  • 停止当前实例,分离根卷并将其连接到新实例
  • 装载卷,修复授权密钥文件的权限
  • 卸载并分离卷,重新连接到原始实例

  • 如果所有设置都正确,则密钥应该在现有实例上再次工作

    如果
    ec2用户
    以某种方式损坏,您可以添加其他用户。这种方法不需要装入卷,而是依赖于修改EC2控制台中的
    用户数据

    例如,您可以创建一个新密钥:

    ssh-keygen-t rsa-C private.key-f private.key-q-N”“

    然后使用以下
    用户数据

    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #cloud-config
    cloud_final_modules:
    - [scripts-user, always]
    
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="userdata.txt"
    
    #!/bin/bash
    USER=additional-user  # 1
    adduser $USER 
    echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/cloud-init 
    mkdir /home/$USER/.ssh 
    echo "ssh-rsa AAAAB3NzaC1yc2EAAA....A38MHe0KAzY9Ob private.key" >> /home/$USER/.ssh/authorized_keys  # 2
    --//
    
  • 用您选择的用户名替换
    其他用户
  • 用刚刚生成的
    private.key.pub
    内容替换双引号中的内容
  • 然后,您应该能够通过ssh连接到实例中:

    chmod 600 private.key
    ssh -i private.key additional-user@<ec2 public ip>
    
    chmod 600 private.key
    ssh-i private.key附加用户@
    
    记得清理你的
    用户数据
    ,这样它就不会在以后的启动中继续运行。一旦ec2用户再次工作,还将取消对其他用户的访问(或至少删除其sudo访问)


    有关更详细的说明,请参阅:

    我猜您指的是443,而不是442?SSH默认使用端口22,这是启用的吗?谢谢您的评论。最终,我不得不开始一个全新的实例,并将其复制到该实例中。我想那辆旧的太乱了