SSH 개인 키에서 공개 키를 어떻게 검색합니까?


444

에 의해 생성 된 SSH 개인 키 ssh-keygen에는 공개 키 부분이 포함됩니다. 개인 키에서이 공개 키를 어떻게 검색합니까? 공개 키를 잃어 버렸고이 공개 키의 내용을 서버 authorized_keys파일 에 넣어야 하며 새 키 페어를 만들고 싶지 않습니다.

또는 문구 : id_rsa.pub파일에서 파일을 어떻게 만듭니 id_rsa까?


pbcopy > ~/.ssh/id_rsa.pub죄송합니다.
Nick T

@NickT-pbcopy는 MacOSX 명령입니다. 또한, 재부팅, 로그 아웃 또는 다른 것을 클립 보드에 복사 한 경우 쓸모가 없습니다.
jsnfwlr

답변:


681

서버 결함에 대한 답변을 찾았습니다 : 개인 키에서 공개 SSH 키를 작성 하시겠습니까?

이 옵션 -y은 공개 키를 출력합니다.

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

부수적으로, 공개 키의 주석은 유실됩니다. 주석이 필요한 사이트가 있었으므로 (Launchpad?) ~/.ssh/id_rsa.pub주석과 키 데이터 사이에 공백이있는 첫 줄에 주석을 편집 하고 추가 해야합니다 . 공개 키의 예는 아래에서 잘립니다.

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

SSH 에이전트에 추가 된 키 (백그라운드에서 실행되고 키 파일 암호문을 반복해서 다시 입력 할 필요가없는 프로그램)의 경우이 ssh-add -L명령을 사용하여 추가 된 키의 공개 키를 나열 할 수 있습니다. 에이전트를 통해 (를 통해 ssh-add -l). SSH 키가 스마트 카드에 저장되어 있고 개인 키 파일에 액세스 할 수없는 경우에 유용합니다.


1
개인 키 파일 ~/.ssh/id_rsa은 사용자 이름으로 제한되어야합니다. $ sudo chmod 600 ~/.ssh/id_rsa루트 자격 증명을 사용 하고 입력하여 제한하면 공개 키 파일을 출력 할 수 있습니다. 그렇지 않으면 개인 키 파일 무제한 경고가 표시됩니다.
Mark Mikofski

12
@MarkMikofski 필요가 없습니다 sudo. 이미 개인 키를 소유하고 있어야합니다. 그렇지 않으면 처음부터 읽을 수 없습니다.
Lekensteyn

7
@Lekensteyn 감사합니다. 물론 맞습니다!. 또한 400필요는 개인 키 파일을 입력 쓸하기 때문에 좋습니다. 수정 된 명령은 다음과 같습니다$ chmod 400 ~/.ssh/id_rsa
Mark Mikofski

개인 키 주석이 손실되었습니다. stackoverflow.com/questions/38290929/…
weberjn

1
@weberjn 개인 키 ( id_rsa파일)에는 주석이 없지만 실제로 공개 키 파일 ( id_rsa.pub) 내의 주석은 손실됩니다.
Lekensteyn

14

이 솔루션은 특히 Amazon AWS 및 GCE의 클라우드 이미지를 포함하여 Windows를 사용하여 원격 시스템에 SSH하는 사용자를위한 솔루션입니다.

(기권)

최근에이 솔루션을 사용하여 GCE에서 새로 배포 된 VM 이미지에 원격으로 로그인했습니다.


사용되는 도구 :

  1. 퍼티 겐
  2. WinSCP

수행 단계 :

  1. puttygen을 사용하여 공개 / 개인 키 쌍을 생성하십시오.
  2. 클라우드 또는 원격 위치에서 서버에 공개 키를 업로드하십시오.

설명 (방법) :

  1. 키 / 페어를 생성하거나 기존 개인 키를 사용하십시오.

    개인 키가있는 경우 :

    puttygen을 열고로드 버튼을 누른 다음 개인 키 (* .pem) 파일을 선택하십시오.

    개인 키 가 없는 경우 :

    • 퍼티 겐 열기,
    • 매개 변수 섹션에서 원하는 키 유형 SSH2 DSA (RSA 또는 DSA를 사용할 수 있음)를 선택하십시오. 비밀번호 문구 필드를 비워 두어야합니다.
    • 생성을 누르고 지시 사항에 따라 (공개 / 개인) 키 쌍을 생성하십시오.

    샘플 키 생성 그림

  2. 새로운 'authorized_keys'파일을 작성하십시오 (메모장 포함).

    PuTTY 키 생성기의 "OpenSSH certified_keys 파일에 붙여 넣기위한 공개 키"섹션에서 공개 키 데이터를 복사하고 키 데이터를 "authorized_keys"파일에 붙여 넣으십시오.

    이 파일에는 한 줄의 텍스트 만 있어야합니다.

  3. Linux 서버에 키를 업로드하십시오.

    • WinSCP를 엽니 다.
    • SFTP 파일 프로토콜을 선택하고 SSH 신임 정보로 로그인하십시오.
    • 성공하면 원격 시스템에 홈 디렉토리 구조가 나타납니다.

    certified_keys 파일을 원격 시스템의 홈 디렉토리에 업로드하십시오.

  4. 적절한 권한을 설정하십시오.

    메이크업 .ssh(존재하지 않는 경우) 디렉토리를

    authorized_keys파일을 .ssh 디렉토리에 복사하십시오 (기존 authorized_keys파일 을 대체합니다 ).

    파일이 존재하면이 파일의 내용을 기존 파일에 추가하십시오.

    권한을 설정하는 명령을 실행하십시오.

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

이제 매번 자격 증명을 입력하지 않고도 원격 컴퓨터로 ssh 할 수 있습니다.

더 읽을 거리 :

  1. Windows에서 SSH 키 생성 및 업로드

  2. OpenSSH 키, 인증서 .pem 및 .pub를 사용하여 비밀번호없이 인증


홈 디렉토리가 암호화되면 다음과 같이하십시오 : askubuntu.com/questions/439184/…
devprashant 10

2
귀하의 답변은 질문과 실제로 관련이 없지만 귀하의 열정으로 인해 투표에 참여합니다.
Truong Nguyen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.