SSH 키의 비밀번호를 변경하는 방법

SSH 키의 비밀번호를 변경하는 방법

SSH 키의 비밀번호를 변경하려고 하면 다음 오류 메시지가 나타납니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 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.

무슨 뜻이에요? 이 문제를 어떻게 해결할 수 있나요?

편집하다:이것은 내 문제를 해결했습니다.

sudo chmod 600 ~/.ssh/id_rsa

답변1

fftcc의 답변은 권한이 SSH 요구 사항을 준수하도록 하는 방법에 대한 자세한 지침을 제공하지만 알아두면 유용할 수 있습니다.왜?이러한 요구 사항이 존재합니다.

개인/공개 키 쌍을 다음과 같이 생각할 수 있습니다.비밀그리고시험.

비밀은 개인 키입니다. 오직 본인만이 알고 있습니다. 그것은 문 열쇠와 같습니다. 자물쇠에 딱 맞습니다. 잠그다시험이것비밀: 공개키로 개인키를 확인할 수 있습니다. (실제 암호화 방식은 더 흥미롭습니다. 공개 키는 개인 키를 알지 못한 채 테스트할 수 있지만 도어락은 할 수 없습니다.)

문 잠금 장치는 공개되어 있습니다. 모든 사람이 그것을 볼 수 있고 열쇠를 넣을 수 있지만(저를 믿으세요. 그렇습니다) 올바른 자물쇠만 허용됩니다.

사람들이 개인 키(또는 문 키)를 복사하도록 허용하면 그들은 귀하의 서버(또는 귀하의 집)에 들어갈 수 있습니다. 따라서 누구도 개인 키를 읽을 수 없습니다.

다른 답변에서 설명했듯이 비밀 위의 모든 디렉터리에 대한 쓰기 권한을 사용하면 비밀에 도달할 때까지 사용자가 반복적으로 권한을 얻을 수 있습니다. 이것이 바로 ssh가 해당 요구 사항보다 높은 사용자 홈 디렉터리에 대한 문제를 제기하는 이유입니다. 처음에는 이상하게 보일 수 있습니다. 섬광. 그런데, ssh가 사용자의 홈 디렉토리 위의 디렉토리도 공개적으로 쓰기 금지되어 있다고 가정하거나 확인하는지 확실하지 않습니다. 물론 이는 일반적인 설정이지만 반드시 지정된 것은 아닙니다.

이러한 원칙에 따라 다양한 파일에 필요한 권한이 가장 적합합니다. 특히 서버 측에서 특정 파일(예: Authorized_keys)을 가정하기 때문에 발생하는 특정 복잡성이 있습니다.필요sshd가 읽을 수 있도록 하는 타사 읽기 액세스입니다. 그러나 sshd는 루트로 실행됩니다. 결국 sshd는 권한 있는 주소에서 소켓을 열고 파일 권한에 관계없이 원하는 모든 것을 읽을 수 있습니다.

그런데, 이는 귀하의 지역 시스템 관리자 인턴이 귀하의 비트코인 ​​지갑인 chmod 600 my butt에 액세스하는 데 사용하는 키를 읽을 수 있음을 의미합니다. 따라서 귀하의 개인 키를 암호화할 수 있는데, 이는 처음에는 중복된 것처럼 보일 수 있지만, 귀하가 당사 관리자를 만나본 적이 있다면 완벽하게 이해될 것입니다. 문제는 실제로 개인 키 암호화와 관련이 있습니다. 권한 문제는 순전히 부수적인 것입니다.

답변2

매뉴얼 페이지에서:

ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
                   [-P old_passphrase]

파일에 올바른 권한이 있는지 확인하십시오.

답변3

sudo ssh-keygen -f ~/.ssh/YOU_PRIVATE_SSH_KEY -p

터미널에 메시지가 표시되면 Permissions 0644다음 명령을 실행하십시오.root

터미널에 메시지가 표시되는 경우failed: Permission denied

권한 문제를 해결하려면 먼저 홈 디렉토리와 디렉토리에 대한 올바른 소유권과 권한을 설정해야 합니다 .ssh. 1

sudo chown -R user:user $HOME sudo chmod 750 $HOME sudo chmod -R 700 $HOME/.ssh 그러면 SSH 요구 사항을 충족하기 위해 .ssh의 모든 파일에 필요한 권한이 생성됩니다. 각 디렉토리 files.ssh에 대한 SSH 권장 사항 및 요구 사항(밑줄)은 아래에 나열되어 있습니다(맨 페이지에서):

~/.ssh/id_rsa (또는 PRIV KEY — 개인, 마스터 키) — 이러한 파일에는 민감한 데이터(예: 인증 키)가 포함되어 있으며 사용자는 읽을 수 있지만 다른 사람은 액세스할 수 없어야 합니다(예: 0600). . 개인 키 파일에 다른 사람이 액세스할 수 있는 경우 ssh 프로그램은 개인 키 파일을 무시합니다.

sudo chmod 600 ~/.ssh/id_rsa

~/.ssh/config — 남용 가능성으로 인해 이 파일에는 엄격한 권한이 있어야 합니다. 즉, 사용자는 읽기/쓰기가 가능하고 다른 사람은 쓸 수 없습니다. — 0644를 설치하는 것으로 충분합니다.

sudo chmod 644 ~/.ssh/config

~ /.ssh/authorized_keys — 이 파일은 그다지 민감하지 않으나 사용자의 읽기 및 쓰기 권한은 0644로 설정하여 다른 사람이 쓸 수 없도록 하는 것이 좋습니다. 2

sudo chmod 644 ~/.ssh/authorized_keys

~/.ssh/known_hosts — 이 파일은 그다지 민감하지 않지만 사용자에게는 읽기-쓰기 권한을 부여하고 다른 모든 사람에게는 읽기 전용 권한을 부여하는 것이 좋습니다. 따라서 0644입니다.

chmod 644 ~/.ssh/known_hosts

~/.ssh/ — 이 디렉터리의 모든 내용을 비밀로 유지해야 하는 일반적인 요구 사항은 없지만 권장되는 읽기/쓰기/실행 권한은 사용자를 위한 것이며 다른 사람은 액세스할 수 없습니다. — 0700이면 충분합니다.

sudo chmod 700 ~/.ssh

~/.ssh/id_rsa.pub(또는 공개 키) - 이러한 파일은 기밀이 아니며 누구나 읽을 수 있습니다(반드시 그런 것은 아님).


1 디렉터리에 대한 쓰기 권한을 통해 사용자는 디렉터리에 포함된 파일과 디렉터리의 권한을 변경할 수 있습니다. .ssh소유자 외에는 누구에게도 알려지면 안 되는 비밀 개인 키가 포함되어 있습니다. 다른 사용자가 포함 디렉터리( .ssh)에 대한 쓰기 권한을 갖고 있는 경우 해당 디렉터리의 키에 대한 권한을 변경하고 파일을 읽을 수 있습니다. 이 매개변수는 파일 시스템 루트에 반복적으로 적용됩니다.

2authorized_keys 엄격한 내용을 포함하지 않더라도비밀— 그 안의 모든 키는 공개됩니다. — 로그인할 수 있는 사람을 지정합니다. (알 수 없지만 확인 가능)개인 키파일에 나열된 공개 키와 연결됩니다. 따라서 Authorized_keys에 대한 쓰기 액세스는 계정 소유자로 제한되어야 합니다.

관련 정보