SSH 및 SCP에 대한 .pem 파일의 올바른 파일 권한은 무엇입니까


69

AWS Ubuntu 서버에 SSH로 연결하여 디렉토리를 로컬 머신에 복사하려고했습니다. 프로세스 전체에서 다른 파일 권한 오류가 발생합니다 (아래 참고).

SSH 및 SCP를 허용하는 .pem 파일에 필요한 특정 파일 권한이 있습니까?
또는 로그인 후 SSH에 대해 한 번, SCP에 대해 다른 권한을 두 번 변경해야합니까?

내가 사용하는 명령은 다음과 같습니다.

SSH :

ssh -i sentiment.pem Todo@54.555.555.555

다음을 사용하여 원격에서 로컬 컴퓨터로 복사하십시오.

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Mac OS X 10.7.5를 사용하고 있습니다.


시행 착오:

1.) .pem 파일을 처음 다운로드 한 후 사용 권한이 다음과 같이 설정되었습니다 : 0644

-rw-r--r-@ 1 Toga 직원 1692 년 2 월 18 일 21:27 sentiment.pem

그런 다음 터미널을 통해 SSH를 시도하고 다음을 받았습니다.

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

2.) 파일 권한을 chmod 660 sentiment.pem으로 업데이트했습니다.

업데이트 후 권한이 다음과 같이 설정되었습니다.

-rw-rw ---- @ 1 Toga 직원 1692 년 2 월 18 일 21:27 sentiment.pem

그런 다음 터미널을 통해 SSH를 시도하고 다음을 받았습니다.

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

3.) 파일 권한을 chmod 600 sentiment.pem으로 업데이트했습니다.

업데이트 후 권한이 다음과 같이 설정되었습니다.

-rw ------- @ 1 Toga 직원 1692 년 2 월 18 일 21:27 sentiment.pem

그런 다음 터미널을 통해 SSH를 시도했지만 성공했습니다!

4.) 이제 로그인하여 a 명령을 실행하여 다음을 사용하여 원격 디렉토리를 로컬 컴퓨터에 복사합니다.

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

다음을 반환합니다 :

Permission denied (publickey).

시도한 SCP 명령 :

1.) -i 명령을 추가하고 .pem 파일을 참조했습니다.

scp -i sentiment.pem Todo@54.555.555.555 : / home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

2.) -i 명령을 추가하고 .pem 파일을 참조한 다음 AWS 사용자를 ec2-user로 변경했습니다.

scp -i sentiment.pem ec2-user@54.555.555.555 : / home / ubuntu / sentimentfolder / Users / Toga / Desktop / sentimentlocal

3.) -i 명령을 추가하고 .pem 파일을 참조하고 AWS 사용자를 ec2-user로 변경 한 다음 .pem 파일 위치에 대한 전체 파일 경로를 추가했습니다.

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555 : / home / ubuntu / sentiment / Users / Toga / Desktop / sentimentlocal


또한 .PEM 파일을 사용하는 scp를 말할 필요
다니엘 kullmann

이해하기 쉬운 @danielkullmann을 불러 주셔서 감사합니다. .pem 파일을 직접 참조하는 명령 조합을 시도했지만 아직 아무것도 작동하지 않았습니다. 나는 시도한 것을 목록으로 만들기 위해 "SCP Commands Attempted"섹션으로 질문을 업데이트했다. 다른 명령 인 경우 알려주십시오. 감사합니다.
George Jester

답변:


110

여기 방문 원격 SSH를 사용하여 아마존 EC2에 연결하는 방법 또는 아래를 참조하십시오.

SSH를 사용하여 Amazon EC2에 원격으로 연결하는 방법 :

  1. .pem 파일을 다운로드하십시오.
  2. Amazon Dashboard의 왼쪽 표시 줄에서 "인스턴스"를 선택한 다음 연결하려는 인스턴스를 선택하십시오.
  3. "작업"을 클릭 한 다음 "연결"을 선택하십시오.
  4. "독립형 SSH 클라이언트와 연결"을 클릭하십시오
  5. 터미널 창을 엽니 다
  6. 디렉토리를 작성하십시오.

    # mkdir -p ~/.ssh
    
  7. 다운로드 한 .pem 파일을 방금 만든 .ssh 디렉토리로 이동하십시오.

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. 루트 사용자 만 읽을 수 있도록 .pem 파일의 권한을 변경하십시오.

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. 구성 파일을 작성하십시오.

    # vim ~/.ssh/config
    

    해당 구성 파일에 다음 텍스트를 입력하십시오.

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    해당 파일을 저장하십시오.

  10. 퍼블릭 DNS 호스트 이름과 함께 ssh 명령을 사용하여 인스턴스에 연결하십시오.
    예 :

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    

1
궁금합니다. 왜 downvote입니까?
erik

1
나는 이것을 투표하지 않았다. 이것은 실제로 도움이됩니다. 원격에서 로컬 comp로 scp해야 할 때 문제가 해결되는지 확실하지 않습니다. 나는 이것을 시도하고 어떤 일이 일어나는지 볼 것이다. 고마워요 Babin.
George Jester

전체 디렉토리와 그 내용을 복사 할 때 사용하십시오 scp -r.
bahamat

1
훌륭한 답변입니다. pem 이동을 피하기 위해 ssh -i 플래그를 사용하여 사용할 공개 키를 지정할 수 있습니다. 예 : ssh -i path / to / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

14

chmod 400 {keyfile}.pem 아마존이 지시하고 작동하는 것입니다.


이것은 내가 찾고있는 대답입니다. 허용 된 답변의 모든 지침은 모범 사례입니다 ...하지만 문제와 관련이 없습니다.
18:09에

3

SCP 명령에서 IP 주소를 사용하지 말고 시스템의 전체 호스트 이름을 사용해야합니다. AWS 문서는 "SCP를 사용하여 Linux / Unix에서 Linux / Unix 인스턴스로 파일 전송"섹션의 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html 에서 이를 설명합니다 .

-r디렉토리를 복사 하는 데 사용 합니다.

기본 사용자 이름은 이미지마다 다릅니다.

Amazon Linux의 경우 기본 사용자 이름은 ec2-user입니다. RHEL5의 경우 사용자 이름은 종종 root있지만 일 수 있습니다 ec2-user. Ubuntu의 경우 사용자 이름은 ubuntu입니다. SUSE Linux의 경우 사용자 이름은 root입니다. 그렇지 않으면 AMI 제공 업체에 확인하십시오.

따라서 다음 명령을 사용하십시오.

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
올바른 사용자 이름을 사용하도록 알려주십시오. 위의 오류가 발생하면 우분투 인스턴스에서 우분투 사용자를 사용해야한다는 것을 기억해야했습니다.
md_rasler

2

"권한이 거부되었습니다 (공개 키)"는 원격 서버에서 온 것이므로 잘못된 키를 사용하고 있거나 연결이 허용되지 않았거나 remote certified_keys 파일에 오타가 있습니다.


2
chmod 0400 pemfile.pem

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
ssh명령을 설명하십시오 (가능한 경우 참조도 제공하십시오). BTW chmod 400는 9 개월 전에 답변을 받았습니다.
Scott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.