.ssh 폴더의 개인 키에 대한 권한?


381

.ssh폴더 에서 권한을 변경 한 후 개인 키를 사용하는 소프트웨어를 사용할 때마다 매번 암호를 입력해야합니다. id_rsa암호를 사용하는 앱을 사용할 때마다 암호를 입력 할 필요가 없으면 파일 에 대한 권한이 무엇이어야 합니까?

현재 내 권한은 다음으로 설정되어 있습니다.

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts

답변:


640

일반적으로 권한은 다음과 같습니다.

  • .ssh 예배 규칙서: 700 (drwx------)
  • 공개 키 ( .pub파일) :644 (-rw-r--r--)
  • 개인 키 ( id_rsa) :600 (-rw-------)
  • 마지막으로 홈 디렉토리는 그룹이나 다른 사람들이 (기타) 쓸 수 없어야합니다 755 (drwxr-xr-x).

매번 시스템 / 사용자 암호를 입력해야하고 이전에는 입력하지 않아도된다고 가정합니다. cdhowie의 답변은 키를 생성 할 때 암호 / 암호를 설정했다고 가정하고, 그렇게하면 ssh 에이전트를 사용하지 않으면 매번 암호를 입력해야합니다.


13
authorized_keys 파일을 사용하는 경우 chmod를 640, 즉 -rw-r -----로 지정해야합니다.
AnneTheAgile

5
맨 페이지에서이 정보를 찾을 수있는 곳은?
Sonique

131
나는 지금 약 30 번이 포스트로 돌아왔다. 나는 그것을 기억할 수 없다고 믿을 수 없다.
JREAM

7
유일한 중요한 것은 .ssh의 어떤 것도 다른 사람이 쓸 수 없으며 다른 사람이 읽을 수있는 비밀 키는 없다는 것입니다.
Markus Kuhn

5
디렉토리에 대한 @Cerin 실행 권한은 해당 디렉토리의 즉각적인 하위 파일 / 디렉토리를 나열 할 수있는 권한을 부여합니다. 폴더 내의 파일은 상위 폴더의 실행 비트를 "상속"하지 않습니다.
Thomas

87

나는 이것을 영원히 고투하고 마침내 필요한 것이 무엇인지 알아 냈습니다. 교체 $USER서버에에 로그인 할 SSH 사용자 이름으로 사방. 로그인을 시도하는 root경우 /root/.ssh등 을 사용해야 /home/root/.ssh하는 대신 루트가 아닌 사용자를위한 방법입니다.

  • 서버의 홈 디렉토리는 다른 사람이 쓸 수 없어야합니다. chmod go-w /home/$USER
  • 서버의 SSH 폴더에는 700 개의 권한이 필요합니다. chmod 700 /home/$USER/.ssh
  • Authorized_keys 파일에는 644 권한이 필요합니다. chmod 644 /home/$USER/.ssh/authorized_keys
  • 즉, 확인 user파일 / 폴더를 소유하지 root: chown user:user authorized_keyschown user:user /home/$USER/.ssh
  • 생성 된 공개 키 (from ssh-keygen)를 authorized_keys서버 의 사용자 파일에 넣습니다.
  • 사용자의 홈 디렉토리가 예상 한대로 설정되어 있고 수정 한 올바른 .ssh폴더가 포함되어 있는지 확인하십시오 . 그렇지 않은 경우 usermod -d /home/$USER $USER문제 해결에 사용 하십시오
  • 마지막으로 ssh를 다시 시작하십시오. service ssh restart
  • 그런 다음 클라이언트에 로컬 사용자 .ssh폴더 에 공개 키 및 개인 키 파일이 있는지 확인 하고 로그인하십시오.ssh user@host.com

첫 번째 단락과 관련하여 로컬 abc서버 상자 의 사용자 (예 :)를 원격 서버의 사용자 (예 :)와 다른 공개 / 개인 키로 ssh 할 수 def@123.456.789있습니다. 방금 로컬 사용자가 로컬 .ssh 파일을 소유하고 있는지 확인해야했습니다 (예 : abc:abc안됨 root:abc)`
Michael

1
초보자를위한 모든 단계와 명령을 넣어 주셔서 감사합니다. Alex 귀하의 답변은 여기에서 가장 유용한 답변 중 하나입니다.
Nav

6
+1. "Authorized_keys 파일에는 644 권한이 필요합니다"<= 매우 중요합니다!
Le Quoc Viet

당신이 디렉토리 SSH를 제공하는 경우 700 모드를, 다음이없는 어떤 점 때문에 그룹과 다른 사람에게 r-- 사용주는이, 단지 당신이 다음 SSH를 "통과"(이 파일에 존재하는 어떤 하드 링크 없다고 가정) 할 수 있습니다. 허용 된 답변에 대해서도 동일합니다. 기본 755이면 충분합니다.
user3125367

pem 파일의 경우 400은 충분합니다.
AT

37

또한 다른 사용자가 홈 디렉토리를 쓸 수 없는지 확인하십시오.

chmod g-w,o-w ~


8
참고로,이 명령은 루트가 아닌 사용자로 로그인 한 것으로 가정합니다
Alex W

6

권한과 관련이 없어야합니다. 개인 키는 비밀번호로 암호화되므로 개인 키를 해독하고 사용할 수 있으려면 입력해야합니다.

암호 해독 된 키를 캐시하고이를 필요한 응용 프로그램에 제공 할 수있는 ssh 에이전트 실행을 고려할 수 있습니다.


ssh 에이전트에 대한 추가 정보를 주셔서 감사합니다. Leopard에 내장 된 것이 있으므로 그렇게 할 것 같습니다. 약간의 문제가 있지만 다른 질문을하겠습니다.

5
권한을 과소 평가하지 마십시오. 그들은 여전히 ​​놀이를 시작합니다.
Alex W

@AlexW 그들은 ssh의 다른 측면을 다루지 만 질문에서 묻는 것은 아닙니다.
cdhowie

개인 키에 암호가 없으면 (스크립트라고하는 자동화 된 원격으로 인해) 도움이되지 않습니다. 여기에 권한이 필요합니다.
nerdoc

"매번 비밀번호를 입력해야합니다. 비밀번호를 사용하는 앱을 사용할 때마다 비밀번호를 입력하지 않으려면 id_rsa 파일에 대한 권한이 무엇이어야합니까?"
Craig Hicks

4

Felipe는 정확합니다. .ssh 디렉토리를 포함하는 디렉토리는 그룹 또는 다른 사람이 쓸 수 없어야합니다. 따라서 ssh-keygen 명령에 암호를 지정하지 않고 .ssh 디렉토리가 홈 디렉토리에 있다고 가정하고 chmod go-w ~실행 후 ssh'ing 할 때 비밀번호를 묻는 메시지가 계속 표시되면 다음으로 논리적으로 시도 ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys하십시오.

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