간단한 SSH 공개/개인 키 질문

간단한 SSH 공개/개인 키 질문

나는 사람들이 질문할 때(그리고 질문할 때) 적절한 조치를 권장할 수 있도록 가이드를 따르는 대신 이를 배우려고 노력하고 있습니다. 여기에 내가 내린 것이 있습니다.

먼저 다음과 같은 명령을 사용하여 두 키를 모두 생성합니다.

ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa

그런 다음 키의 공개 부분을authorized_keys2 파일에 푸시합니다.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2

(그런 다음 600 또는 이와 유사한 것으로 chmod)

그리고 개인 키를 컴퓨터(id_rsa)에 다운로드하고 Putty에 입력하여 읽고 인증합니다.

SSH에 비밀번호 없이 로그인하기 위해 이 공개/개인 키 인증을 설정하는 올바른 단계가 있습니까?

답변1

설명한 단계는 작동하지만 문제가 있습니다. 대상(원격) 컴퓨터에서 키 쌍을 생성한 다음 개인 키 파일을 로컬 시스템에 다운로드합니다. 여기에는 간과해서는 안 될 보안 관련 사항이 있습니다.

  • 리모컨이 이미 손상된 경우 누군가가 방금 귀하의 암호를 알아냈을 수도 있습니다.
  • 향후 원격 시스템이 손상되면 공격자는 개인 키 파일에 액세스할 수 있게 됩니다(오프라인 무차별 대입 공격을 사용하여 암호 해독을 시도하는 고급 방법도 제공).

비밀번호 인증에 내재된 일부 문제를 해결하기 위해 SSH 키 쌍을 사용하고 있으므로 일반적으로 다음과 같은 방식으로 작업을 수행하려고 합니다.

  • 로컬 시스템에서 키 쌍을 생성합니다. 이상적으로 개인 키는 (a) 공유 파일 시스템(예: NFS 홈 디렉터리)에 저장되지 않으며 (b) 원격 로그인을 허용하는 컴퓨터에 저장되지 않습니다.

  • 공개 키를 광범위하게 공개하세요. 나는 필요할 때마다 얻을 수 있도록 공개 키를 웹사이트에 보관합니다. authorized_keys연결하려는 시스템의 적절한 파일에 공개 키를 넣으세요 .

특히 편집증이 있는 경우 개인 키를 USB 드라이브에 저장하고 해당 드라이브를 사용하여 실행 중인 ssh-agent. 이 시점에서는 더 이상 실제 키 파일이 필요하지 않습니다.

답변2

클라이언트 시스템에서 키를 생성하는 것이 더 나을 수도 있습니다. Authorized_keys 파일이 더 커질 수도 있지만 손상된 시스템을 비활성화하는 것이 더 쉽습니다. 서버의 개인 키를 마이그레이션하는 경우 키를 다시 생성하고 모든 클라이언트 시스템으로 마이그레이션해야 합니다. 각 클라이언트에는 고유한 키가 있어야 합니다.

Putty는 puttygen키를 생성하는 데 사용됩니다. puttygen또한 클라이언트 시스템에 붙여 넣을 수 있는 올바른 형식의 공개 키를 제공합니다. 로그인 액세스에 키를 사용하는 경우 암호로 키를 보호하는 것이 가장 좋습니다. Pageant또는 ssh-agent연결할 때마다 암호를 다시 입력할 필요가 없도록 메모리에 보호되지 않은 키를 보관하는 데 사용할 수 있습니다.

하나의 키를 추가하고 보호를 설정한 후에는 권한을 재설정할 필요 없이 추가 키를 추가할 수 있습니다. 나는 일반적으로 시스템에서 공개 키를 같은 이름으로 업로드합니다. example.pub여기서 example은 키가 속한 시스템의 이름입니다.

authorized_keys많은 구현 에서 키 파일을 사용하는 것으로 돌아왔습니다 . 이 파일은 키가 허용되는 시스템을 제한하고, 명령을 강제로 실행하고, 액세스를 제한하는 등의 작업에 사용할 수 있습니다. man자세한 내용은 페이지 를 확인하세요 .

어떤 경우에는 클라이언트 시스템에 여러 개의 키를 갖는 것이 유용할 수 있습니다. 이는 비밀번호가 없는 키로 실행되는 일괄 프로세스를 지원하기 위해 수행될 수 있습니다.

답변3

좋아 보인다. 많은 사람들이 반대 방향(로컬에서 키를 생성한 다음 .pub서버에 푸시) 으로 수행 하지만 어느 쪽이든 작동할 수 있습니다.

관련 정보