SSH를 통해 EC2 인스턴스에 연결하려고 할 때 "서버에서 키 거부"라는 오류 메시지가 표시되는 이유는 무엇입니까?

5분 분량
0

SSH를 통해 Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스에 연결하면 "서버에서 키 거부"라는 오류 메시지가 나타납니다.

간략한 설명

SSH 서버(sshd)가 개인 SSH 키를 거부하는 데에는 여러 가지 이유가 있습니다. 이 오류가 발생하는 몇 가지 일반적인 이유는 다음과 같습니다.

해결 방법

Amazon EC2 인스턴스에 연결하려고 할 때 AMI에 잘못된 사용자 이름을 사용

일반적인 사용자 이름은 ec2-user, ubuntu, centos, root, admin입니다. 올바른 사용자 이름 목록은 오류: 서버가 키를 거부했거나 지원되는 인증 방법을 사용할 수 없음을 참조하십시오.

사용자가 서버에서 삭제되었거나 AWS 계정이 잠김

인스턴스에 액세스하려는 사용자가 서버에서 삭제된 경우, 해당 사용자를 새 사용자로 다시 추가하십시오. 자세한 내용은 Amazon EC2 Linux 인스턴스에 SSH 액세스 권한이 있는 새 사용자 계정을 추가하려면 어떻게 해야 합니까?를 참조하십시오.

인스턴스에 권한 문제가 있거나 디렉터리가 없음

인스턴스의 권한 및 디렉터리를 확인하는 방법에는 네 가지가 있습니다.

방법 1: EC2 직렬 콘솔 사용

Linux용 Amazon EC2 직렬 콘솔을 활성화한 경우, 직렬 콘솔을 사용하여 지원되는 Nitro 기반 인스턴스 유형 문제를 해결할 수 있습니다. 사용자는 Amazon EC2 콘솔이나 AWS Command Line Interface(AWS CLI)를 사용해 직렬 콘솔에 액세스할 수 있습니다. 자세한 내용은 EC2 직렬 콘솔 액세스 구성을 참조하십시오.

방법 2: AWS Systems Manager Session Manager를 사용하여 인스턴스에 로그인하고 권한 확인

**참고:**이 방법을 사용하려면 SSM 에이전트를 설치해야 합니다. 세션 관리자 및 전체 필수 구성 요소 목록에 대한 자세한 내용은 세션 관리자 설정을 참조하십시오.

  1. AWS Systems Manager 콘솔을 엽니다.

  2. 세션을 시작합니다.

  3. stat 명령을 사용하여 디렉터리에 있는 파일의 권한이 올바른지 확인합니다. 다음은 올바른 권한의 예시 목록입니다.
    Linux 홈 디렉토리, /home, (0755/drwxr-xr-x).
    사용자의 홈 디렉토리, /home/ec2-user/, (0700/drwx------).
    .ssh 디렉토리 권한, /home/ec2-user/.ssh, (0700/drwx------).
    authorized_keys 파일 권한, /home/ec2-user/.ssh/authorized_keys, (0600/-rw-------).
    다음은 stat 명령과 출력의 예입니다. 이 예에서 ec2-user는 사용자 이름입니다. 사용자 이름을 특정 AMI로 변경합니다.

    $ stat /home/ec2-user/  File: '/home/ec2-user/'
      Size: 4096          Blocks: 8          IO Block: 4096   directory
    Device: 10301h/66305d    Inode: 18322       Links: 3
    Access: (0700/drwx------)  Uid: (  500/ec2-user)   Gid: (  500/ec2-user)
  4. 권한이 이전 값과 일치하지 않는 경우, 다음 명령을 실행합니다.

    $ sudo chown root:root /home$ sudo chmod 755 /home
    $ sudo chown ec2-user:ec2-user /home/ec2-user -R
    $ sudo chmod 700 /home/ec2-user /home/ec2-user/.ssh
    $ sudo chmod 600 /home/ec2-user/.ssh/authorized_keys
  5. 세션을 종료합니다.

  6. SSH로 인스턴스에 연결합니다.

방법 3: 오류의 원인이 되는 문제를 자동으로 수정하려면 AWSSupport-TroubleshootSSH 문서를 실행

AWSSupport-TroubleshootSSH 자동화 문서는 인스턴스에 Amazon EC2Rescue 도구를 설치합니다. 그런 다음 자동화 문서는 SSH를 통한 Linux 시스템 연결 중에 원격 연결 오류를 일으키는 문제를 확인하고 수정합니다. 자세한 내용은 SSH를 사용하여 EC2 인스턴스에 연결하려고 할 때 오류가 발생합니다. AWSSupport-TroubleshootSSH 자동화 워크플로를 사용하여 SSH 연결 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오

방법 4: 사용자 데이터를 사용하여 인스턴스에 대한 권한 수정

중요:

  • 이 복구 절차를 수행하려면 인스턴스를 중지하고 다시 시작해야 합니다. 이때 인스턴스 스토어 볼륨의 데이터가 손실됩니다. 자세한 내용은 Amazon EC2 인스턴스의 루트 볼륨을 참조하십시오.
  • 인스턴스가 Amazon EC2 Auto Scaling 그룹에 속한 경우 중지 시 인스턴스가 종료될 수 있습니다. 이는 Amazon EMR, AWS CloudFormation 또는 AWS Elastic Beanstalk과 같이 AWS Auto Scaling을 사용하는 서비스에서 시작한 인스턴스에서도 발생할 수 있습니다. 이 시나리오에서 인스턴스 종료 여부는 Auto Scaling 그룹의 인스턴스 축소 보호 설정에 따라 달라집니다. 인스턴스가 Auto Scaling 그룹에 속한 경우 문제 해결 단계를 시작하기 전에 Auto Scaling 그룹에서 인스턴스를 제거해야 합니다. 해결 단계를 완료한 후 Auto Scaling 그룹에 인스턴스를 다시 추가할 수 있습니다.
  • 인스턴스를 중지하고 다시 시작하면 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 외부 트래픽을 인스턴스로 라우팅할 때는 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하는 것이 모범 사례입니다.
  • 인스턴스의 루트 디바이스가 인스턴스 스토어 볼륨인 경우, 사용자 데이터를 사용하여 SSH 키를 변경할 수 없습니다. 자세한 내용은 Amazon EC2 인스턴스의 루트 볼륨을 참조하십시오.
  • 인스턴스의 사용자 데이터 업데이트는 cloud-init 지시문을 지원하는 배포에 모두 적용됩니다. 클라우드 초기화를 설치하고 구성해야 합니다. 자세한 내용은 Cloud-init 웹 사이트의 SSH - SSH 및 SSH 키 구성을 참조하십시오.

다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 열고 인스턴스를 선택합니다.

  2. 인스턴스 상태를 선택한 다음, 인스턴스 중지를 선택합니다.
    참고: 중지를 사용할 수 없는 경우, 인스턴스가 이미 중지되었거나 루트 디바이스가 인스턴스 스토어 볼륨일 수 있습니다.

  3. 작업을 선택하고 인스턴스 설정을 선택한 다음 사용자 데이터 편집을 선택합니다.

  4. 다음 명령을 사용자 데이터 필드에 복사한 다음 저장을 선택합니다. 전체 명령을 복사하고 여분의 공백을 남기지 마십시오.
    참고: 다음 명령은 사용자 이름 ec2-user를 사용합니다. ec2-userAMI의 사용자 이름으로 바꾸십시오.

    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
    chown root:root /home
    chmod 755 /home
    chown ec2-user:ec2-user /home/ec2-user -R
    chmod 700 /home/ec2-user /home/ec2-user/.ssh
    chmod 600 /home/ec2-user/.ssh/authorized_keys
    --//
  5. 인스턴스를 시작한 다음 SSH를 사용하여 인스턴스에 연결합니다.
    참고: 기본적으로 user data 명령은 인스턴스당 한 번 실행됩니다. 이 절차는 인스턴스를 재부팅, 중지, 시작할 때마다 공개 키를 추가하도록 기본 동작을 변경합니다. 기본 동작을 복원하려면 사용자 지정 사용자 데이터를 삭제하십시오. 보안 프로토콜을 따르고 인스턴스를 처음 부팅한 후 사용자 데이터가 실행되도록 하는 것이 모범 사례입니다. ModifyInstanceAttribute API 메서드를 사용하여 인스턴스의 사용자 데이터를 수정합니다. 이 메서드에 대한 액세스를 제한하려면, IAM 정책을 사용하십시오.

관련 정보

PuTTY를 사용하여 Linux 인스턴스에 연결

Amazon EC2 키 페어 및 Amazon EC2 인스턴스

SSH를 사용하여 Amazon EC2 Linux 인스턴스에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 7달 전
댓글 없음

관련 콘텐츠