Louisa가 문제 해결을 도와드립니다.
Amazon EC2를 사용할 때 "서버에서 키 거부"
오류 발생

Loiusa_ec2-server-refused-our-key-1

SSH를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결할 수 없고 "서버에서 키가 거부됨”이라는 오류 메시지를 받았습니다. 해결하려면 어떻게 해야 합니까?

다음과 같은 경우 EC2 인스턴스에 로그인하지 못할 수 있습니다.

  • 사용한 SSH 프라이빗 키에 해당하는 퍼블릭 키가 authorized_keys 파일에 없습니다.
  • authorized_keys 파일에 대한 권한이 없습니다.
  • .ssh 폴더에 대한 권한이 없습니다.
  • authorized_keys 파일 또는 .ssh 폴더의 이름이 올바르지 않습니다.
  • authorized_keys 파일 또는 .ssh 폴더가 삭제되었습니다.
  • 인스턴스가 키 없이 시작되었거나 잘못된 키로 시작되었습니다.

"서버에서 키가 거부됨” 오류를 수신한 후 EC2 인스턴스에 연결하려면 인스턴스의 사용자 데이터를 업데이트하여 지정된 SSH 퍼블릭 키를 authorized_keys 파일에 추가할 수 있습니다. 그러면 SSH 디렉터리 및 디렉터리의 파일에 대한 적절한 소유권 및 권한이 설정됩니다.

인스턴스의 사용자 데이터를 업데이트하는 절차를 시작하기 전에 다음을 참고하십시오.

  • 홈 디렉터리에 대한 권한이 잘못된 경우 이 절차를 수행해도 문제가 해결되지 않습니다. 홈 디렉터리 권한을 수동으로 수정해야 합니다.
  • 이 절차는 cloud-init 지시문을 지원하는 모든 배포에 적용됩니다. 이러한 명령이 성공하려면 cloud-init를 설치하고 구성해야 합니다. cloud-init SSH 모듈에 대한 자세한 내용은 Configure ssh and ssh keys를 참조하십시오.
  • 이 절차를 시작할 때는 인스턴스를 중지해야 합니다. 임시 볼륨의 모든 데이터는 손실됩니다.
  • 인스턴스의 루트 디바이스가 인스턴스 스토어 볼륨인 경우 이 절차를 사용하여 SSH 키를 변경할 수 없습니다.

다음 단계에 따라 인스턴스의 사용자 데이터를 업데이트하여 지정된 SSH 퍼블릭 키를 authorized_keys 파일에 추가하십시오.

1.    Amazon EC2 콘솔에서 인스턴스를 선택합니다.

2.    [Actions]를 선택하고 [Instance State]를 선택한 다음 [Stop]을 선택합니다. 참고: [Stop]이 비활성화되어 있으면 해당 인스턴스가 이미 중지되었거나 루트 디바이스가 인스턴스 스토어 볼륨인 것입니다. 인스턴스의 루트 디바이스가 인스턴스 스토어 볼륨인 경우 이 절차를 사용하여 SSH 키를 변경할 수 없습니다.

3.    연결을 시작하는 운영 체제에 따라 다음 방법 중 하나를 사용하여 SSH 퍼블릭 키를 찾습니다.

Linux 다음과 유사한 명령을 실행합니다.

# ssh-keygen -y -f /path/to/keypair.pem

Windows PuTTYGen을 엽니다. 그런 다음, .PEM 파일을 로드합니다. “Public key for pasting into OpenSSH authorized_keys file"이라는 제목의 상자에 퍼블릭 키가 표시됩니다.

4.    SSH 퍼블릭 키를 기록합니다. 이후 단계에서 퍼블릭 키가 필요합니다.

5.    Amazon EC2 콘솔로 돌아가 인스턴스를 선택합니다.

6.    [Actions]를 선택하고 [Instance Settings] 및 [View/Change User Data]를 차례로 선택합니다.

7.    [View/Change User Data] 대화 상자에서 [User Data]에 다음 코드 조각을 입력합니다. 참고: SSH 퍼블릭 키를 ssh-rsa의 값으로 입력합니다. 값은 퍼블릭 키와 정확히 일치해야 하며 추가 공백이나 문자가 없어야 합니다. 

#cloud-config
ssh_deletekeys: false
ssh_authorized_keys:
  - ssh-rsa ENTER YOUR PUBLIC KEY HERE ...
cloud_final_modules:
  - [ssh, always]

8.[Save]를 선택합니다.

9.    [Actions]를 선택하고 [Instance State]를 선택한 다음 [Start]를 선택합니다.

인스턴스가 시작되면 사용자 이름으로 로그인할 수 있습니다. Amazon Linux, RHEL, Ubuntu, CentOS, Fedora 및 SUSE Amazon 머신 이미지(AMI)에 대한 사용자 이름 목록은 Linux 인스턴스에 연결을 참조하십시오. ec2-user 및 root를 사용할 수 없는 경우 AMI 공급자에게 문의하십시오.

참고: 기본적으로 사용자 데이터 스크립트는 인스턴스당 한 번 실행됩니다. 이 절차는 기본 동작을 변경하여 퍼블릭 키를 인스턴스의 모든 재부팅, 중지 또는 시작에 추가합니다. 기본 동작을 복원하려면 사용자 지정 사용자 데이터를 제거하십시오. 모범 사례에 따라 인스턴스를 처음 부팅한 후 사용자 데이터를 실행하도록 허용할 때의 보안 영향을 고려하십시오. 인스턴스의 사용자 데이터는 ModifyInstanceAttribute API 메서드를 사용하여 수정할 수 있습니다. 이 메서드에 대한 액세스를 제한하려면 AWS Identity and Access Management(IAM) 정책을 참조하십시오. 


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2017년 6월 26일

업데이트된 날짜: 2018년 5월 21일