SSH가 갑자기 잘못된 형식을 반환


23

그래서 얼마 전에 AWS에 서버를 설정하고 생성 된 SSH 키를 사용했습니다. 열쇠를 Lastpass에 저장하고 이전부터 성공적으로 검색하여 작동 시켰습니다. 그러나 오늘 다시 시도한 후에는 작동하지 않습니다.

-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name

나는 시도했다 ssh -i key_name, ssh-keygen -f key_name그러나 아무것도 작품, 난 항상이 오류 메시지가 :

Load key "key_name": invalid format

이 문제를 해결할 방법이 있습니까?

답변:


13

key_name요원이 말하면 내용 invalid format을 확인한 후 키와 같은 문제가있는 것입니다. 정확한 키인지 확인하십시오. 필요한 개인 키가 아니더라도 invalid format키가 작동하면 ssh 에이전트가 반환 되지 않으므로 간단히 연결할 수 없습니다. 어떤 이유로 공개 키를 배치했을 수 있습니다. 확인해 봐!


5
확실히 확인했습니다. 로 시작 ----BEGIN RSA PRIVATE KEY-----하고로 끝납니다 -----END RSA PRIVATE KEY-----. 게다가 그것은 작동했습니다.
Gregor Menih 2016

2
가능성은 거의 없지만 파일이 손상되었을 가능성이 있습니다. 새 것을 만들고 lastpass에서 내용을 다시 채 웁니다.
13dimitar

2
와우, 실제로 도움이되었습니다! 새 키를 생성 한 후 새 키는 한 줄에 64자인 반면 내 이전 키는 76 자라는 것을 알았습니다. 이전 키를 한 줄에 64 자만 사용하도록 다시 포맷 한 다음 작동하기 시작했습니다! 또한 첫 번째 줄에서 대시 하나가 누락되었습니다.
Gregor Menih 2016

2
"또한 첫 줄에서 대시 하나가 누락되었습니다." 같게. @ItsGreg에게 감사합니다. 터미널 사이에서 선택하고 복사 할 때 첫 문자가 너무 자주 표시되지 않습니다!
starfry

15

내가이 문제를 해결하기 위해 한 것은를 사용하여 PPK 파일을 변환하는 데 사용한다는 것 PuttyGen입니다.

먼저를로드 한 urkey.PPK다음 변환 메뉴에서 Openssh 파일 형식으로 내보내기를 클릭하십시오. 새 키 파일을 생성합니다.

지금, ssh -i "newkey" user@127.0.0.1

끝난. 도움이 되길 바랍니다.


4

.ssh / config 파일에 특정 ID 파일을 지정하여 openssh에 요청했습니다.

원래 작업 구성에는

IdentityFile = <path to public key file> 

변경없이 작동이 중지되었습니다. 약간의 생각으로 위의 "공개 키 파일 경로"를 "개인 키 파일 경로"로 바꿨습니다. 효과가있었습니다. 그 이유는 공개 키와 개인 키 파일 모두 RSA 알고리즘에 따라 큰 pudoprime 관련 숫자를 갖기 때문입니다. 개인 키 파일을 공개 키 파일로 바꾸면 키 파일 내에 저장된 base64 블록에서 이러한 암호화 번호가 올바르게 추출되지 않습니다. ssh의 일부 버전은 .pub 확장자를 알아 내고 올바른 개인 키 파일을 식별하는 데 사용할 수 있습니다. 다른 버전에서는 그렇게하지 않습니다. 이 오류가 발생할 수있는 또 다른 방법입니다. 그것이 누군가를 돕기를 바랍니다.


제 경우에는 설치 config파일이 path_to_public_key있었고 모든 것이 작동했습니다. 그러나 Mac이 강제로 다시 시작되고 며칠 후에 나는을 시도했지만 git push위에 언급 된 오류가 발생하기 시작했습니다. 하지만 내가 지금 그것을 바꾸었을 때 path_to_private_key일하고 있습니다 ... 흠. 이유를 모르겠습니다 ..
lukik

3

나는 같은 문제가 있었고 어떤 이유로 파일에 Windows 스타일 (CRLF) 줄 구분 기호가있는 것으로 나타났습니다.

또한 파일은 단일 LF로 끝나야합니다.

그것들을 고쳐서 다시 멋지게 만들었습니다.


최종 LF가 너무 필요하다는 것은 충격적이지만, 실제로는 부분적으로 문제였습니다. 다른 부분은 Windows에서 파일을 만들고 그렇게하면 CRLF 줄 바꿈이 발생합니다. 다른 참조 dos2unix를 위해 CRLF (Windows 스타일)에서 LF (Linux 스타일) 줄 바꿈으로 변환하는 명령이 있습니다.
Hashim

1

.ppk 키를 OpenSSH 키로 변환해야합니다

방법은 다음과 같습니다. .

  1. PuttyGen을 다운로드하고 키 페어를 생성하십시오 (키 페어가 준비되어 있지 않은 경우). 개인 키를 폴더 (.ppk)에 저장
  2. 이미 개인 키를 가지고 있다면 "로드"버튼을 눌러 개인 키 파일 (.ppk)을로드하십시오. 그렇지 않으면이 단계를 건너 뛰십시오
  3. "변환"메뉴에서 OpenSSH 키 내보내기를 선택한 다음 폴더에 저장하십시오.
  4. 이제 비밀번호를 입력하지 않고 키를 사용하여 서버에 로그인 할 준비가되었습니다 (이미 공개 키를 /root/.ssh/authorized_keys, chmod 600 /root/.ssh/authorized_keys 및 재시동 된 SSH 데몬 아래에 둔 것으로 가정합니다)

1

CI 파이프 라인을 위해 git tagging utils를 작성할 때 오늘이 문제에 부딪 쳤습니다.

내 두 키의 차이점은 다음과 같습니다.

$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file

코드를 다음과 같이 변경했습니다.

     with open(ssh_key_file, 'w') as skf:
-        skf.write(ssh_key)
+        skf.write(ssh_key + '\n')

그리고 이제 내 ssh 키가 작동합니다.

TL; DR-개인 키 끝에 줄 바꿈이 있어야한다고 생각합니다.


1

필자의 경우 시작 / 종료 "헤더"와 주요 데이터 사이에 줄 바꿈이 있음이 밝혀졌습니다.

-----BEGIN RSA PRIVATE KEY-----

- Key data here -

-----END RSA PRIVATE KEY-----

여분의 새 줄을 제거하여

-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----

내 문제를 해결했다.


0

공개 키 대신 개인 키를 사용하십시오.


내 답변과 동일한 솔루션-설명도 추가
vpathak

0

~ / .ssh에 실제로 유효하지 않은 형식의 키가 있고 키가 많기 때문에이 문제가 발생했습니다. 이는 명령에서 ID 파일을 지정했지만 SSH가 키를 모두 사용하려고 시도했음을 의미합니다. 그것은 내가 생각하는 5 개의 키 만 시도 할 수 있기 때문에 실패합니다. 그런 다음 잘못된 신원 파일에 대한 합법적 인 오류로 나를 떠났습니다. 해결책은 IdentitiesOnly yes~ / .ssh / config에서 사용하는 것이 었습니다 .


0

키 파일의 시작 부분에 빈 줄이 있었기 때문에이 오류가 발생했습니다. cat밖으로 나가면 놓치기 쉽습니다 .


0

개인 키에 암호가 있고 연결을 시도 할 때 암호를 잘못 입력하면 ssh (적어도 일부 버전) 오류가 발생합니다.

(특히 Mac OS X 10.13.6 용 내장 SSH 인 OpenSSH_7.6p1, LibreSSL 2.6.2에서 이런 일이 발생했습니다.)

올바른 암호를 사용하고 있으며 Caps Lock이 꺼져 있는지 다시 확인하십시오.


-2

PRIVATE 키의 이름을 바꾸고 문제가되는 파일 확장자를 제거하십시오.

내가 취한 단계

공개 키를 작성하십시오.

개인 키와 동일한 디렉토리에 있는지 확인하십시오

공개 키를 만드는 방법 :

ssh-keygen -y -f Private-Key.pem > Public-key.pub

PUBLIC 키의 확장자가 .pub인지 확인하십시오

그 후 보안상의 이유로 적절한 권한을 제공하십시오.

chmod 600 Private-Key.pem
chmod 400 Public-key.pub

그런 다음 가장 중요한 부분과 "잘못된 형식"오류가 발생한 이유

PRIVATE 키의 이름을 바꾸고 파일 확장자를 제거하십시오.

개인 키에서 .pem을 제거하십시오.

mv Private-Key.pem Private-Key

또는 Windows 컴퓨터에서 개인 키의 이름을 바꾸는 경우 동일한 이름으로 .pem

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