[amazon-web-services] Amazon EC2 인스턴스에 대한 SSH 액세스가 종료되면 권한 거부 (퍼블릭 키)

Amazon ec2 인스턴스를 사용하고 싶지만 다음 오류가 발생했습니다.

Permission denied (publickey).

키 페어를 만들고 .pem 파일을 다운로드했습니다 .

주어진:

chmod  600 pem file.

그런 다음이 명령

ssh -i /home/kashif/serverkey.pem  ubuntu@ec2-54-227-242-179.compute-1.amazonaws.com

그러나이 오류가 있습니다.

Permission denied (publickey)

또한 filezilla에 연결하여 파일을 업로드 / 다운로드하는 방법은 무엇입니까?



답변

이 오류 메시지는 인증에 실패했음을 의미합니다.

다음과 같은 원인이 발생할 수 있습니다.

  1. 잘못된 키로 연결하려고합니다. 이 인스턴스가이 키 쌍을 사용하고 있습니까?
  2. 잘못된 사용자 이름으로 연결하려고합니다. ubuntu우분투 기반 AWS 배포의 사용자 이름이지만 다른 일부에서는ec2-user (또는 admin일부 Debians에, 보그 Kulbida의 대답에 따라) (도 할 수있다 root, fedora아래 참조)
  3. 잘못된 호스트를 연결하려고합니다. 로그인하려는 올바른 호스트입니까?

참고 1. 당신이 엉망 경우도 발생합니다 /home/<username>/.ssh/authorized_keys당신의 EC2 인스턴스에 파일을.

에 대해 2., 어떤 사용자 이름을 사용해야하는지에 대한 정보가 종종 AMI 이미지 설명에서 부족합니다. 그러나 AWS EC2 설명서에서 요점을 찾을 수 있습니다 4..
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

ssh 명령을 사용하여 인스턴스에 연결하십시오. 개인 키 (.pem) 파일과 user_name @ public_dns_name을 지정합니다. Amazon Linux의 경우 사용자 이름은 ec2-user입니다. RHEL5의 경우 사용자 이름은 root 또는 ec2-user 입니다. Ubuntu의 경우 사용자 이름은 ubuntu 입니다. Fedora의 경우 사용자 이름은 fedora 또는 ec2-user 입니다. SUSE Linux의 경우 사용자 이름은 root 입니다. 그렇지 않으면 ec2-user 및 root가 작동하지 않으면 AMI 공급자에게 문의하십시오.

마지막으로 인증이 실패하는 다른 많은 이유가 있다는 점에 유의하십시오. SSH는 일반적 -v으로이 질문에 대한 다른 많은 답변에서 설명 된 것처럼 SSH 명령에 옵션을 추가 하고 출력을 읽으려는 경우 무엇이 잘못되었는지에 대해 매우 분명 합니다.


답변

이 경우 키 쌍이 손실되어 문제가 발생합니다. 이것에 대해:

  • 인스턴스에서 키 페어를 변경할 수있는 방법이 없습니다 . 새 키 페어를 사용하는 새 인스턴스를 만들어야합니다.
  • Elastic Beanstalk 의 애플리케이션에서 인스턴스를 사용하는 경우 문제를 해결할 수 있습니다 .

다음 단계를 수행 할 수 있습니다.

  1. AWS Management Console에 액세스
  2. Elastic Beanstalk 탭 열기
  3. 모든 애플리케이션 탭 에서 애플리케이션을 선택하십시오.
  4. 왼쪽 메뉴에서 Configuration을 선택하십시오.
  5. 인스턴스 기어를 클릭하십시오
  6. 에서 서버 양식은 확인 EC2 키 쌍의 입력을하고 새 키 쌍을 선택합니다. 방금 생성 한 새 키 페어를 보려면 목록 을 새로 고쳐야 할 수도 있습니다 .
  7. 저장
  8. Elastic Beanstalk는 새 키 페어와 연결된 새 인스턴스를 생성합니다.

일반적으로 EC2 인스턴스가 인바운드 SSH 트래픽을 허용하도록해야합니다.

이렇게하려면 EC2 인스턴스의 보안 그룹에 대한 특정 규칙을 만들어야합니다. 이 단계를 수행 할 수 있습니다.

  1. AWS Management Console에 액세스
  2. EC2 탭 열기
  3. 에서 인스턴스 목록 관심있는 인스턴스를 선택
  4. 에서 설명 탭 의 이름 첵 보안 그룹 인스턴스가 사용됩니다.
  5. 설명 탭 에서 다시 규칙보기를 클릭하고 보안 그룹에 포트 22의 인바운드 ssh 트래픽 규칙이 있는지 확인하십시오.
  6. 그렇지 않은 경우 네트워크 및 보안 메뉴에서 보안 그룹을 선택하십시오.
  7. 인스턴스에서 사용 하는 보안 그룹을 선택하고 인바운드 탭을 클릭하십시오.
  8. 인바운드 탭의 왼쪽에서 SSH 인바운드 트래픽에 대한 규칙을 작성할 수 있습니다.
    • 새로운 규칙 생성 : SSH
    • 소스 : 인스턴스에 액세스하려는 IP 주소 또는 하위 네트워크
    • 참고 : 인스턴스에 무제한 액세스 권한 을 부여 하려면 0.0.0.0/0 을 지정할 수 있지만 Amazon에서는이 방법을 권장하지 않습니다.
  9. 규칙 추가를 클릭 한 후 변경 사항 적용
  10. SSH를 통해 인스턴스에 연결할 수 있는지 확인하십시오.

이것이 나를 도와 준 누군가를 도울 수 있기를 바랍니다.


답변

이것이 내가 문제를 해결 한 방법입니다

ssh -i <key> ec2-user@<ec2 ip>


답변

나는 문제 바로 퍼팅 해결 sudo하기 전에를

sudo ssh -i mykey.pem myec2.amazonaws.com

그러나 올바른 해결책은 먼저 소유권을 변경 한 다음 Janus Troelsen이 말한 것처럼 일반 사용자로 연결하는 것입니다. 내 경우에는 다음과 같습니다.

chown wellington:wellington key.pem


답변

사용해보십시오

sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>

또는

sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>


답변

이 오류의 또 다른 원인은 다음과 같습니다.

사용자의 홈 디렉토리가 그룹 쓰기 가능 인 경우 사용자는 로그인 할 수 없습니다.

(Ubuntu 인스턴스에서 재현되었습니다.)


답변

우분투 12.04 lts 마이크로 인스턴스의 경우 사용자 이름을 옵션으로 설정해야했습니다.

ssh -i pemfile.pem -l ubuntu dns