내용으로 건너뛰기

SSH를 통해 EC2 인스턴스에 연결하려고 할 때 "Server refused our key" 오류 메시지가 표시되는 이유는 무엇입니까?

5분 분량
0

SSH를 통해 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결하면 "Server refused our key"라는 오류 메시지가 표시됩니다.

해결 방법

SSH 서버(sshd)는 다음 이유 중 하나로 프라이빗 SSH 키를 거부할 수 있습니다.

인스턴스에 권한 문제가 있거나 디렉터리가 없는 경우 Server refused our key 오류 메시지가 표시될 수도 있습니다. 인스턴스 권한 및 디렉터리를 확인하려면 다음 방법 중 하나를 사용하십시오.

EC2 직렬 콘솔 사용

Linux용 EC2 직렬 콘솔을 활성화한 경우, 직렬 콘솔을 사용하여 지원되는 Nitro 기반 인스턴스 유형 문제를 해결할 수 있습니다.

Systems Manager를 사용하여 인스턴스에 로그인하고 권한 확인

전제 조건: AWS Systems Manager Agent(SSM Agent)를 설치합니다 또한 구성이 AWS Systems Manager의 기능인 Session Manager의 전제 조건을 준수하는지 확인하십시오.

Session Manager를 사용하여 인스턴스 문제를 해결하려면 다음 단계를 완료하십시오.

  1. Systems Manager 콘솔을 엽니다.

  2. 세션을 시작합니다.

  3. home 디렉터리에 있는 파일에 올바른 권한이 있는지 확인하려면 다음 명령을 실행합니다.

    stat /home/ec2-user/  
    ls -ld /home               # Should show drwxr-xr-x (755)
    ls -ld /home/ec2-user      # Should show drwx------ (700)
    ls -ld /home/ec2-user/.ssh # Should show drwx------ (700)
    ls -l /home/ec2-user/.ssh/authorized_keys # Should show -rw------- (600)     

    참고: ec2-userAMI의 올바른 사용자 이름으로 바꾸십시오.
    출력에서 Access를 검사하여 구성에서 다음 권한을 사용하는지 확인하십시오.
    /home Linux 홈 디렉터리에는 0755/drwxr-xr-x 권한이 있어야 합니다.
    /home/ec2-user/ 사용자의 홈 디렉터리에는 0700/drwx------ 권한이 있어야 합니다.
    /home/ec2-user/.ssh .ssh 디렉터리 권한에는 0700/drwx------ 권한이 있어야 합니다.
    /home/ec2-user/.ssh/authorized_keys authorized_keys 파일 권한에는 0600/-rw------- 권한이 있어야 합니다.
    출력 예시:

    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

    참고: ec2-userAMI의 올바른 사용자 이름으로 바꾸십시오.

  5. 세션을 종료합니다.

  6. SSH를 사용하여 인스턴스에 연결합니다.

AWSSupport-TroubleshootSSH 런북 실행

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

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

중요: 인스턴스를 중지하고 시작하기 전에 다음 작업을 수행하십시오.

참고: 인스턴스를 중지하고 시작할 때 인스턴스의 퍼블릭 IP 주소가 변경됩니다. 퍼블릭 IP 주소 대신 탄력적 IP 주소를 사용하여 외부 트래픽을 인스턴스로 라우팅하는 것이 가장 좋습니다. Amazon Route 53을 사용하는 경우 퍼블릭 IP 주소가 변경될 때 Route 53 DNS 레코드를 업데이트해야 할 수 있습니다.

사용자 데이터를 사용하여 권한 문제를 해결하려면 다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 인스턴스를 선택한 다음, 해당 인스턴스를 선택합니다.

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

  4. 작업을 선택하고 인스턴스 설정을 선택합니다.

  5. 사용자 데이터 편집을 선택하고 다음 명령을 입력합니다.

    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
    --//

    참고: ec2-userAMI의 올바른 사용자 이름으로 바꾸십시오. 위의 명령을 입력할 때 공백을 더 추가하지 마십시오.

  6. 저장을 선택합니다.

  7. 인스턴스를 시작한 다음, SSH를 사용하여 인스턴스에 연결합니다.

기본적으로 user data 명령은 각 인스턴스에 대해 한 번 실행됩니다. 위 단계에서는 기본 동작을 변경하여 인스턴스를 재부팅, 중지 또는 시작할 때마다 퍼블릭 키를 추가합니다. 기본 동작을 복원하려면 사용자 지정 user data 명령을 제거하십시오. 인스턴스를 처음 부팅한 후 user data가 실행되도록 하는 것이 좋습니다. ModifyInstanceAttribute API를 사용하여 인스턴스의 사용자 데이터를 수정할 수 있습니다. ModifyInstanceAttribute API에 대한 액세스를 제한하려면 AWS Identity and Access Management(IAM) 정책을 사용하십시오.

관련 정보

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

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

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

SSH를 통해 EC2 인스턴스에 연결하려고 할 때 "Server refused our key" 오류 메시지가 표시되는 이유는 무엇입니까?