경고 : 보호되지 않은 개인 키 파일! Amazon EC2 인스턴스로 SSH를 시도 할 때


190

Amazon EC2 인스턴스에서 Panda를 설정하려고합니다. 어제 밤에 계정과 도구를 설정했으며 SSH를 사용하여 내 개인 인스턴스와 상호 작용하는 데 아무런 문제가 없었지만 지금은 Panda의 EC2 인스턴스에 대한 권한이 허용되지 않습니다. 팬더 시작하기

다음과 같은 오류가 발생합니다.

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

Permissions 0644 for '~/.ec2/id_rsa-gsg-keypair' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

지난 밤 개인 인스턴스에 들어가기 위해 키 페어를 600으로 변경했으며 권한을 0으로 설정하고 새로운 키 문자열을 생성하는 길이를 실험했지만 아무것도 작동하지 않는 것 같습니다.

어떤 도움이라도 큰 도움이 될 것입니다!


흠, 디렉토리에서 권한이 777로 설정되어 있지 않으면 ec2-run-instances 스크립트가 내 키 파일을 찾을 수없는 것처럼 보입니다. SSH를 처음 사용하므로 무언가를 간과 할 수 있습니다.


ec2-run-instances에는 키 쌍 ​​이름 만 필요하며 이는 Amazon 측에있는 이름입니다. SSH를 입력 할 때 실제 개인 키 (디스크의 키) 만 사용해야합니다. ec2-run-instances에서 어떤 오류가 발생합니까?
user27619

3
이 질문에 대한 끔찍한 제목.
MikeNereson 2016 년

2
@MikeNereson : 자유롭게 편집하십시오. 이것이 우리가 여기에서 상황을 개선하는 방법입니다
Stu Thompson

600 (10 진)이 아닌 0600 (8 진)으로 설정 하시겠습니까?
hyde

5
chmod 400 ~/.ssh/id_rsa 참조 : stackoverflow.com/a/9270753/2082569
atulkhatri

답변:


210

어제 밤 개인 인스턴스에 들어가기 위해 키 페어를 600으로 변경했습니다.

그리고 이것이 예상되는 방식입니다.

로부터 EC2 문서 우리가 "당신은 OpenSSH를 (또는 합리적으로 편집증 SSH 클라이언트)를 사용하는 경우에 당신은 아마 당신 만이 읽을 수 있어요 그래서이 파일의 사용 권한을 설정해야합니다." 팬더 문서는 귀하가 아마존의 문서로 연결되는 링크이지만 실제로 그것이 얼마나 중요한지를 전달하지는 않습니다.

아이디어는 키 페어 파일이 비밀번호와 같으므로 보호해야한다는 것입니다. 따라서 사용중인 ssh 클라이언트는 해당 파일을 보호하고 계정에서만 파일을 읽을 수 있어야합니다.

디렉토리를 700으로 설정하면 충분하지만 파일이 600 인 한 777은 아프지 않습니다.

당신이 겪고있는 문제는 클라이언트 측이므로, 후속 질문과 함께 로컬 OS 정보를 포함하십시오!


3
나는 오늘 키 파일을 그룹에서 읽을 수있게하려는 상황에 도달했습니다 (개인 로그인에는 ssh를 사용하지 않고 원격 서버에서 스크립트를 실행하기 위해 원격 서버 에서이 목적으로 원격 서버의 전용 사용자는 authorized_keys 만 잠겨 있음) 해당 스크립트가 실행되고 원본 서버의 여러 사용자가 스크립트를 실행할 수있는 액세스 권한이 있어야합니다. 글쎄, 간단한 해결 방법은 액세스 권한이 있어야하는 모든 사용자를 위해 ~ / .ssh /에 복사본을 넣거나 authority_keys를 모든 개인 키로 채우는 것입니다.
tobixen

@tobixen : 2 년이 지났지 만 ... '올바른'해결 방법은 키를 전용 사용자에게 배치하고 그룹 사용자가 해당 명령을 전용 사용자로 실행할 수 있도록 허용하는 것입니다.
Stu Thompson

EC2 설명서에 대한 @StuThompson 링크가 종료 된 것 같습니다. 업데이트 하시겠습니까?
Aniket Thakur 2016 년

나는 당신의 대답에 그것이 작동하게하기 위해 shuld가 무엇인지 알 수 없습니다. 답을 적어주십시오 :)
Pratik

키 파일 모두에 대해 @Pratik 설정 600과 디렉토리에 대해 777이 작동해야합니다.
Jamo

55

개인 키 파일이 포함 된 디렉토리가 700 으로 설정되어 있는지 확인하십시오.

chmod 700 ~/.ec2

파일에 대한 실행 권한을 갖고 싶은 특별한 이유가 있습니까?
Zoltán

1
@ Zoltán 파일이 아닌 디렉토리입니다.
avmohan

나는 이것을 .pem 파일에서 사용했고 그것은 나를 위해 일했다.
CGTheLegend

30

이 문제를 해결하려면 1) 권한을 기본값으로 다시 설정해야합니다.

sudo chmod 600 ~/.ssh/id_rsa sudo chmod 600 ~/.ssh/id_rsa.pub

다른 오류가 발생하는 경우 : 연결을 계속 하시겠습니까 (예 / 아니요)? 예 알려진 호스트 목록 (/home/geek/.ssh/known_hosts)에 호스트를 추가하지 못했습니다.

2) 이는 해당 파일에 대한 권한도 잘못 설정되었으며 다음과 같이 조정할 수 있음을 의미합니다.

sudo chmod 644 ~/.ssh/known_hosts

3) 마지막으로 디렉토리 권한도 조정해야 할 수도 있습니다.

sudo chmod 755 ~/.ssh

백업하고 실행해야합니다.


17

개인 키 파일은 보호되어야합니다. 필자의 경우 오랫동안 public_key 인증을 사용해 왔으며 개인 키 및 644 (rw-r-- r--) 및 600에 대한 권한을 600 (rw- --- ---)으로 설정하는 데 사용했습니다. 홈 폴더의 .ssh 폴더에는 700 권한 (rwx --- ---)이 있습니다. 이것을 설정하려면 사용자의 홈 폴더로 이동하여 다음 명령을 실행하십시오.


.ssh 폴더에 대한 700 권한 설정

chmod 700 .ssh


개인 키 파일에 대한 600 권한 설정

chmod 600 .ssh/id_rsa


공개 키 파일에 대한 644 권한 설정

chmod 644 .ssh/id_rsa.pub


2

개인 키, 공개 키, known_hosts를 동일한 디렉토리에 유지하고 다음과 같이 로그인을 시도하십시오.

ssh -I(small i) "hi.pem" ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
  • 의미에서 같은 디렉토리 cd /Users/prince/Desktop. 이제 lscommand를 입력 하면 **.pem **.ppk known_hosts

참고 : 동일한 디렉토리에서 로그인을 시도해야합니다. 그렇지 않으면 현재 디렉토리에서 .pem 파일을 찾을 수 없으므로 권한 거부 오류가 발생합니다.


임의의 디렉토리에서 SSH를 사용하려면 다음을 ~/.ssh/config파일에 추가 할 수 있습니다 .

Host your.server
HostName ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ec2/id_rsa-gsg-keypair
IdentitiesOnly yes

이제 단순히 디렉토리 ssh your.server(또는 "호스트"다음에 입력 한 이름)를 입력하여 디렉토리 위치에 관계없이 서버에 SSH로 연결할 수 있습니다 .


1

Windows에서는 git bash를 사용하고 Linux 명령을 사용하십시오. 쉬운 접근

chmod 400 *****.pem

ssh -i "******.pem" ubuntu@ec2-11-111-111-111.us-east-2.compute.amazonaws.com

WSL을 사용하는 경우, chmod는 / mnt 디렉토리에서 유효하지 않으므로 pem 파일을 Linux 폴더로 복사하십시오.
Paulo Merson


0

존재하지 않는 다른 사용자 이름으로 로그인하려고하면 다른 메시지가 나타납니다.이 메시지가 나타납니다.

따라서 ec2-user로 ssh를 시도하고 있다고 생각하지만 최근에 centos AMI의 대부분을 기억합니다. 예를 들어 ec2-user 대신 centos user를 사용하고 있습니다.

따라서 ssh -i file.pem centos@public_IP올바른 사용자 이름으로 ssh를 시도하고 있다고 말하면 그렇지 않은 경우 ~ / .ssh / id_rsa 또는 file.pem에 대한 올바른 권한으로도 이러한 오류 메시지가 표시됩니다.


0

이것을 우연히 발견 한 사람을위한 참고 사항 :

나와 공유 한 키로 SSH를 시도하는 경우 :

ssh -i /path/to/keyfile.pem user@some-host

어디 keyfile.pem공개 / 개인 키가 당신과 함께 공유하고 연결하는 데 사용하고, 에 반드시 그것을 저장을 ~/.ssh/하고 chmod 777.

내 컴퓨터의 다른 곳에 저장된 파일을 사용하려고 시도하면 OP 오류가 발생했습니다. 직접 관련되어 있는지 확실하지 않습니다.


0

해결책은 파일 소유자 만 읽을 수 있도록하는 것입니다. 즉, 8 진 모드 표현의 마지막 두 자리는 0이어야합니다 (예 : mode 0400).

OpenSSH는 다음에서 authfile.c이름이 지정된 함수에서 이를 확인합니다 sshkey_perm_ok.

/*
 * if a key owned by the user is accessed, then we check the
 * permissions of the file. if the key owned by a different user,
 * then we don't care.
 */
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("Permissions 0%3.3o for '%s' are too open.",
        (u_int)st.st_mode & 0777, filename);
    error("It is required that your private key files are NOT accessible by others.");
    error("This private key will be ignored.");
    return SSH_ERR_KEY_BAD_PERMISSIONS;
}

주석 다음의 첫 번째 행을 참조하십시오. 파일의 모드에 대해 "비트 단위"를 수행하고 마지막 두 8 진 숫자의 모든 비트를 선택합니다 ( 각 078 진수 0b111는 r / w / x를 나타냄). .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.