ssh“권한이 너무 열려 있습니다”오류


2053

디스크에 더 이상 어떤 종류의 파일도 저장할 수없는 Mac에 문제가있었습니다. OSX lion을 재부팅하고 파일 및 acl에 대한 권한을 재설정해야했습니다.

그러나 이제 저장소를 커밋하려고하면 ssh에서 다음 오류가 발생합니다.

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

id_rsa 파일에 어떤 권한 수준을 부여해야합니까?


19
질문 해 주셔서 감사합니다. 이 오류 메시지를 작성한 사람은 몇 가지 유효한 구성 (예 : 600 또는 400)을 제안하는 것이 더 좋습니다. 도움이되는 충분히 완전한 오류 메시지를 작성하지 않은 프로그래머는 수년간 우리 모두를 괴롭 히고 있습니다!
George Pligoropoulos

FWIW, 이것은 페이지 StrictModessshd서버에서 활성화되는 것과 관련이 있습니다 . "StrictModes sshd (8)가 로그인을 수락하기 전에 파일 모드와 사용자 파일 및 홈 디렉토리의 소유권을 확인해야하는지 여부를 지정합니다." -권장하지는 않지만 비활성화 할 수 있습니다.
masseyb

답변:


3470

키는 본인 만 읽을 수 있어야합니다.

chmod 400 ~/.ssh/id_rsa

키를 읽을 수 있어야하는 경우 :

chmod 600 ~/.ssh/id_rsa

600 도 괜찮은 것처럼 보입니다 (실제로 파일을 편집하기 위해 파일 권한을 변경할 필요가 없기 때문에 대부분의 경우 더 좋습니다).

맨 페이지의 관련 부분 ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

299
400은 너무 낮아서 자신의 사용자가 쓸 수 없습니다. 600은 실제로 읽기만이 아니라 소유자 읽기 / 쓰기를 허용하기 때문에 권장됩니다.
jfreak53

8
나는 오늘 400과 관련이있는 시간이 있음을 발견했습니다. no-pty et al 기능 세트 가있는 authorized_keys 파일이 있다고 가정하십시오 . 파일이 쓰기 가능한 경우 사용자는 실제로 authorized_keys 파일을 덮어 쓰고 대화식 쉘 액세스를 얻을 수 있습니다! 명심해야 할 것은 있지만 대부분의 사람들에게는 일반적인 경우는 아닙니다.
quickshiftin

17
AWS는 실제로 웹 사이트에서 권한 400을 권장합니다. 그것이 내가 OS X에서 한 일이며 효과가있었습니다.
George Mylonas

5
이것은 확실히 작동하고 더 안전합니다. 유일한 단점은 편집하려면 600으로 변경해야한다는 것입니다. id_rsa 및 id_rsa.pub의 경우 파일을 편집하는 경우가 거의 없기 때문에 문제가 의심 스럽지만 authorization_keys의 경우 성 가실 수 있습니다. 트레이드 오프를 이해하고 각 시스템을 적절하게 구성하는 것이 가장 좋습니다.
quickshiftin

3
편집 빈도에 따라 달라집니다. 많은 사람들이 그것을 설정하고 잊어 버렸습니다. 따라서 400은 다른 사람들과 자신의 행동으로부터 더 안전합니다. 필요한 경우 600으로 수정합니다. 워크 플로 및 ssh-savy의 일부인 경우 권한 변경을 유지하는 데 방해가 될 수 있습니다.
vol7ron

99

Windows 8.1에서 Cygwin을 사용하면 명령을 실행해야합니다.

chgrp 사용자 ~ / .ssh / id_rsa

그런 다음 여기에 게시 된 솔루션을 적용 할 수 있습니다 .400 또는 600은 정상입니다.

chmod 600 ~ / .ssh / id_rsa

참조 : http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8


8
로케일에 따라 다릅니다. "Users"에 해당 그룹이 없다는 오류 때문에 "chgrp Użytkownicy ~ / .ssh / id_rsa"를 실행해야했습니다.
Marcos

나도 이것을해야했다. 내 cygwin 디렉토리가 기본 위치 ( C:\cygwin64)에 있었으므로 아마도 권한을 상속했을 것입니다. 내가 소유 한 다른 랩톱에서는 이런 일이 발생하지 않은 것이 이상합니다.
Zach Thacker

3
@Marcos 로캘에 관계없이 작동하는 답변을 추가했습니다. stackoverflow.com/a/28647713/67013
thehouse

4
Windows 10. 두 번째 명령 만 사용했습니다. 매력처럼 일했다.
StalkAlex

대체 언어로 설치하는 경우 'Users'그룹에는 대체 식별자가 있습니다.
John Rumpel

43

Windows 8.1에서 작동하는 로캘 독립적 솔루션은 다음과 같습니다.

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545는 로캘에서 사용자에 대해 다른 단어를 사용하더라도 항상 '사용자'그룹을 나타내는 특수 ID 입니다.



24

AFAIK 값은 다음과 같습니다.

키 파일이있는 숨겨진 디렉토리 ".ssh"의 경우 700

키 파일 "id_rsa"의 경우 600


19

Windows 10에 오류가 있으므로 다음과 같이 권한을 설정하면 작동합니다.

Windows 10의 id_rsa에 대한 권한

'SYSTEM'과 'Administrators'만있을 때까지 다른 사용자 / 그룹을 제거하십시오. 그런 다음 읽기 권한으로 만 Windows 로그인을 추가하십시오.

메모 id_rsa파일이 아래 c:\users\<username>폴더에 있습니다.


Win-10에서도 같은 문제가 있습니다. 귀하의 설명에 따라 실제로 허용하고 거부 한 사항을 명확하게 알 수 없습니다. 옵션 및 시스템 및 관리자로 "사용자"및 "인증 된 사용자"및 "특정 사용자 아님"이 있습니다. 게다가 cygwin을 알아낼 수 없었습니다-설치 또는 사용. (?)
Sam-T

2
Win10의 경우 키를 사용자의 집으로 옮길 필요가 있습니다 . 키에 대한 전체 경로를 제공하고 권한을 엉망으로 만들려고했지만 아무것도 효과가 없었습니다.
Sam-T

당신이 목록에서 이름을 볼 수없는 경우 샘-T @, 당신은 언론 추가 할 수 있습니다 Edit...다음 Enter 키를 눌러 Add...다음 텍스트 상자에 이름을 입력 "Enter the object names to select"한 다음를 누릅니다Check Names 버튼 (키를 누릅니다 OK또 다른 OK다음 이름이 나열되어야합니다) Security
Supawat Pusavanno

아마 당신의 지시에 따라 이름을 구체적으로 추가 할 수 있습니다. 그러나 나의 주요한 질문은- 거부하고 허용 할 수있는 정확한 권한무엇인가 였습니다 . 한편으로 나는 단지를 추가하여 문제를 해결할 수 있다고 말했습니다 .pem받는 사람myuser directory
샘-T

15

키에 대한 "0x00"권한 요구 사항에는 한 가지 예외가 있습니다. 루트가 소유하고 사용자가있는 그룹이 키를 소유 한 경우 "0440"일 수 있으며 해당 그룹의 모든 사용자가 키를 사용할 수 있습니다.

나는 이것이 "0xx0"세트의 모든 권한으로 작동한다고 생각하지만 모든 버전과의 모든 조합을 테스트하지는 않았습니다. CentOS 6에서 5.3p1-84로 0660을 시도했으며 그룹은 사용자의 기본 그룹이 아니라 보조 그룹이며 제대로 작동합니다.

이것은 일반적으로 누군가의 개인 키가 아니라 응용 프로그램이 키를 엉망으로 만들 수없는 상황에서 자동화에 사용되는 키에 대해 수행됩니다.

.ssh 디렉토리 제한 사항에도 유사한 규칙이 적용됩니다.


15

400 권한을 제공하고 아래 명령을 실행하십시오.

chmod 400 /Users/username/.ssh/id_rsa

여기에 이미지 설명을 입력하십시오


큰! 이것은 나를 위해 문제를 해결했습니다. 감사합니다!
Emanuela Colta

11

Windows 10에서는 cygwin의 chmod와 chgrp로는 충분하지 않았습니다. 파일-> 속성-> 보안 (탭)을 마우스 오른쪽 버튼으로 클릭하고 활성 사용자를 제외한 모든 사용자 및 그룹을 제거해야했습니다.


이것은 작동하는 유일한 솔루션입니다.) 감사합니다. 시간을 절약하셨습니다
Atul

이 작업을 수행 한 후 일반 Windows 명령 프롬프트에서도 ssh를 수행 할 수 있음을 알았습니다. Cygwin을 사용할 필요가 없습니다. 큰!
Atul

8

이것이 나를 위해 일한 것입니다 (Mac에서)

sudo chmod 600 path_to_your_key.pem 

그때 :

ssh -i path_to_your_key user@server_ip

도움이되기를 바랍니다.



4

다른 Mac에서 마이그레이션 한 후에도 같은 문제가 발생했습니다. 그리고 내 키로 github을 연결하는 것을 차단했습니다.

아래와 같이 권한을 재설정하면 제대로 작동합니다.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

AWS의 Ubuntu EC2“권한이 너무 열려 있습니다”오류에 대한 Windows 10 ssh

이 문제는 AWS의 .pem 파일을 사용하여 Ubuntu EC2 인스턴스로 ssh하려고했습니다.

Windows에서는이 키를 .ssh 폴더 아래에 만든 키에 넣을 때 작동했습니다.

C:\Users\USERNAME\.ssh\private_key

Windows 10에서 권한 설정을 변경하려면

파일 설정> 보안> 고급

상속 비활성화

상속 된 권한을 명시 적 권한으로 변환

관리자를 제외한 모든 권한 항목을 제거하십시오.

그런 다음 안전하게 연결할 수 있습니다.


4

나를 위해 (Windows 용 Ubuntu 하위 시스템 사용) 오류 메시지가 다음과 같이 변경되었습니다.

 Permissions 0555 for 'key.pem' are too open

chmod 400을 사용한 후. root를 기본 사용자로 사용하는 것이 이유였습니다.

cmd를 사용하여 이것을 변경하십시오.

 ubuntu config --default-user your_username

3

흥미로운 메시지가 있습니다. 개인 키가 너무 열려 있으면 운영 체제가 원격 연결을 거부 할 정도로 똑똑합니다. id_rsa에 대한 권한이 광범위하게 공개되는 위험을 이해합니다 (읽기, 누구나 편집 가능).

{잠금을 먼저 변경 한 다음 이미 가지고있는 키로 열 수 있음}

cd ~/.ssh
chmod 400 id_rsa

프로덕션이 아닌 여러 서버에서 작업하는 동안 대부분의 사람들은 원격 서버를 ssh와 연결해야한다고 생각합니다. 서버간에 ssh 트러스트를 만들려면 응용 프로그램 수준 코드 (jsch를 사용하는 java 일 수 있음)를 사용하는 것이 좋습니다. 이런 식으로 연결하면 암호가 필요하지 않습니다. 펄이 설치되어있는 경우 net ssh 모듈도 사용할 수 있습니다.


1

Ansible을 사용하는 동안이 오류가 발생했습니다. 이 문제를 해결하기 위해 개인 키의 권한을 600 으로 변경했습니다 . 그리고 효과가있었습니다!

chmod 600 .vagrant/machines/default/virtualbox/private_key

1

내 개인 키에 대해 600 수준의 권한을 시도해 보았습니다. chmod 600 privateKey [dev] $ ssh -i privateKey user @ ip가 작동했습니다

chmod 755 privateKey [dev] $ ssh -i privateKey user @ ip 아래 문제가 발생했습니다. 'privateKey'에 대한 권한 0755가 너무 열려 있습니다. 다른 사람이 개인 키 파일에 액세스 할 수 없어야합니다. 이 개인 키는 무시됩니다. "privateKey"키로드 : 잘못된 권한


0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    이 공개 키를 사용하여 ftp에 로그인하려고 할 때 공개 키의 위치를 ​​먼저 찾으십시오. 먼저 키를 생성하고 해당 키 권한을 600으로 설정합니다.
            올바른 위치에 있는지 확인하십시오.
            1 단계:
            올바른 위치로 이동
            2 단계:
            올바른 위치에 있으면
 명령: 
     chmod 600 id_rsa

        This has solved my issue.

-1

EC2에서 VPC를 사용하고 있으며 동일한 오류 메시지가 나타납니다. 공개 DNS를 사용하고 있음을 알았습니다. 나는 그것을 개인 DNS와 vola로 바꾸었다!! 그것은 효과가 있었다 ...


Amazon은 chmod 400 및 퍼블릭 DNS 사용을 권장합니다. 여기에서 설명서를 참조하십시오 : docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ddri

-2

Win10의 경우 linuxlike os의 경우 사용자의 홈 디렉토리로 키를 이동해야합니다 .700과 같은 600 또는 600 등으로 chmod해야합니다.


Win10의 경우 키를 사용자의 집으로 옮길 필요가 있습니다 . 키에 대한 전체 경로를 제공하고 권한을 엉망으로 만들려고했지만 작동하지 않았습니다.
Sam-T
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.