[server] 여러 시스템에서 동일한 SSH 개인 키 사용

두 개의 다른 Linux 시스템에서 액세스하고 싶은 Github 저장소가 있습니다.

첫 번째 머신의 경우 SSH 키 생성에 대한 Github의 지침 을 따르고 결과 공개 키를 Github에 추가했습니다. 이 클라이언트는 잘 작동합니다.

두 번째 클라이언트의 /home/{user}/.ssh/id_rsa경우 첫 번째 클라이언트에서 파일을 복사했습니다 . 나는 이것이 내가해야 할 일이라고 생각했지만 연결하려고하면 ‘Permission denied (publickey)’가 나타납니다.

내가 무엇을 놓치고 있습니까?



답변

여러 클라이언트에서 동일한 SSH 키를 사용할 수 있어야합니다. 네트워크마다 다른 SSH 키가 있으며 실제로 여러 컴퓨터에서 사용하는 암호화 된 USB 드라이브에 문제없이 저장됩니다.

내가 처음부터 모든 권한을 체크 할 수 있도록 SSH 파일 권한에 대한 매우 까다 롭고입니다 /home/{user}까지 모든 방법을 id_rsa파일 자체.

SSH는 실제로 그룹 또는 세계 쓰기 권한을 신경 쓰지 않으므로 chmod go-w홈 디렉토리와 ~/.ssh초보자를위한 디렉토리를 확인하십시오 . 또한 귀하의 사용자가 소유하고 있는지 확인합니다 chown ${USER}:${USER}.

SSH 키 자체의 chmod 600경우 …

원하는 경우 다른 SSH 질문에 대한 답변 에서 SSH 키를 관리하는 방법에 대한 추가 정보가 있습니다 .


답변

Github의 끝에서 권한이 거부되면 복사 된 SSH 키 파일을 선택하지 않고 시스템 기본값이 될 수 있습니다. 이 문제를 해결하는 쉬운 방법은 ~/.ssh/config파일을 정리하고 다음을 넣는 것입니다.

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

이것은 SSH 클라이언트가 github.com에만 해당 키를 사용하도록합니다.

이것이 도움이되기를 바랍니다.


답변

나는 이것이 오래되었다는 것을 알고 있지만 공개 키를 두 번째 클라이언트 에 복사해야한다고 지적했습니다.

(또는 ssh-keygen -y -f ~ / .ssh / id_rsa_ ..> ~ / .ssh / id_rsa … pub로 다시 계산)

[1]부터 :

  1. 공개 키 인증 방법 : “publickey”

    필요한 필수 인증 ‘방법 이름’은 “공개 키”
    인증입니다. 모든 구현은 반드시이 방법을 지원해야합니다.
    그러나 모든 사용자가 공개 키를 가질 필요
    는 없으며 대부분의 로컬 정책은
    가까운 시일 내에 모든 사용자에 대해 공개 키 인증을 요구하지는 않습니다 .

    이 방법을 사용하면 개인 키를 소유하는 것이
    인증 역할을 합니다. 이 방법은
    사용자의 개인 키로 만든 서명을 보내면 작동합니다 . 서버는 키
    가 사용자의 유효한 인증 자인지 확인하고
    서명이 유효한지 확인해야 합니다. 둘 다 보유하는 경우 인증 요청을
    수락 해야합니다 . 그렇지 않으면 반드시 거부해야합니다.
    인증에 성공 하면 서버에 추가 인증이 필요할 수 있습니다.

ssh 클라이언트는 공개 키 (위에 굵게 표시된 서명)를 서버로 보내 인증을 시작합니다. 공개 키가 인증 된 키인 경우 서버는 임의의 세션 ID를 클라이언트로 다시 보냅니다. 그런 다음 클라이언트는 개인 키로 해당 세션 ID를 인코딩하여 서버로 다시 보냅니다. 서버는 공개 키를 사용하여 해당 세션 ID를 해독하고 원래 세션 ID와 일치하면 클라이언트를 인증합니다.

[1] [ http://www.openssh.org/txt/rfc4252.txt][1]


답변

아마도 두 번째 클라이언트에서 파일의 권한을 복사하지 않았기 때문일 수 있습니다.
그러나 개인 키는 개인 , 올바른 방법으로는 두 번째 클라이언트에서 새 개인 키를 생성 한 다음 Github에서 자신의 공개 키를 추가하는 것입니다


답변