SSH 오류 : 알 수없는 키 유형 '----- BEGIN'


8

인증 된 키를 사용하여 원격 서버에 SSH 로그인하는 데 문제가 있습니다. 내가받는 오류 메시지는 다음과 같습니다.

OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host

이 사이트의 다른 질문들도 비슷한 질문을했으며 솔루션은 일반적으로 클라이언트 측의 모든 권한을 다시 확인하는 것이 었습니다.

drwxr-xr-x+ 23 bfenker          staff   782 May  8 11:02 bfenker
drwx------   8 bfenker          staff   272 May  8 10:05 .ssh
-rw-------   1 bfenker  staff  1675 May  8 09:51 id_rsa
-rw-r--r--   1 bfenker  staff   418 May  8 09:51 id_rsa.pub
-rw-------   1 bfenker  staff   999 May  8 09:46 identity
-rw-r--r--   1 bfenker  staff   663 May  8 09:46 identity.pub
-rw-r--r--   1 bfenker  staff   416 May  8 09:06 known_hosts

인증 된 키를 사용하여 다른 서버로 SSH를 만들 수 있으며이 서버 SSH에서 원하는 서버로 SSH를 사용할 수 있습니다. 이것은 해결하려는 통과 가능한 해결 방법이지만 클라이언트와 서버가 모두 올바르게 설정되어 있음을 보여줍니다.

SSH를 다른 서버에 성공적으로 연결할 때 동일한 오류 메시지가 표시되지만 다음 줄부터 복구하는 것 같습니다.

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0

왜 이것이 일부 경우에는 작동하지만 내가 원하는 경우에는 작동하지 않는지 알고 있습니까? 다른 제안은 대단히 감사하겠습니다!


서버 /etc/hosts.allow/etc/hosts.deny파일 을 변경 했습니까 ?
Michael Hampton

답변:


13

네크로 퀘스트! 이 키를 사용하여 다른 서버에 로그인 할 수 있다는 사실을 기반으로 @ michael-hampton의 올바른 흔적이 있습니다. 대상 서버에 액세스를 거부하는 무언가 (방화벽 / tcp 래퍼 / sshd 구성)가 있습니다. 잘못된 키 형식에 대한이 모든 이야기는 디버그 정보의 잘못된 해석에 기반한 빨간색 청어입니다. 라인

debug1: identity file /Users/bfenker/.ssh/id_rsa type 1

ssh가 키를 이해할 수 있음을 나타냅니다.


4
이것은 더 높아야하며 이것과 정확히 같은 로그가 있었지만 SSH 키를 이해하게되어 다른 이유로 연결되지 않았습니다. 그것이 로그에서 말하는 이유는 그것이 실제로는 가능할 때 열쇠를 이해할 수 없다는 것입니다.
mgrandi

먼저 한 줄 형식으로 읽으려고 시도하고 실패하면 자세한 정보를 로그에 출력 한 다음 다른 형식도 시도하여 성공합니다.
Samoth

8

SSH 키가 잘못된 형식으로 저장되었습니다. OpenSSH는 한 줄에있는 키를 사용합니다. ssh-keygenwith -i-m옵션 이 필요합니다 ( 페이지 참조) man ssh-keygen. 아마도 다음 중 하나 일 것입니다 :

ssh-keygen -m RFC4716 -i -f /Users/bfenker/.ssh/id_rsa

출력을 새 키 파일 ( ssh-keygen ... >newkeyfile) 로 사용하십시오 .

편집 1 :

"이 옵션은 암호화되지 않은 개인 (또는 공개) 키 파일을 읽습니다. "

따라서 아마도 해당 형식을 이해하는 프로그램에 의해 암호가없는 파일로 파일을 변경해야합니다.


답장을 보내 주셔서 감사합니다. 내 ssh-keygen 응용 프로그램에는 -m옵션 이 없으며 옵션없이 시도 -m하면이 오류가 발생합니다. buffer_get_string_ret: bad string length 813827235 key_from_blob: can't read key type decode blob failed.
fenkerbb

그런 다음 SSH 소프트웨어 설명서를 확인하거나 일반 Linux 시스템 (신뢰할 수있는 시스템)에서 변환해야합니다.
Hauke ​​Laging

하아! "일반"리눅스! MacOSX를 사용하고 있으므로 OS가 문제 일 가능성이 높습니다.
fenkerbb

@fenkerbb OS는 아니지만 (= OS) SSH 구현의 기본 키 형식입니다. puttyWindows 에서와 동일한 문제가 있습니다. 그러나 퍼티는 두 가지 형식을 모두 편리하게 제공하기에 매우 좋습니다 ... (적어도 공개 키의 경우)
Hauke

다른 버전의 ssh-keygen으로 명령을 시도 하고이 오류가 발생했습니다 buffer_get_string_ret: bad string length 813827235 . 내 키 파일의 첫 번째 줄은 -----BEGIN RSA PRIVATE KEY-----다음 줄에서 시작하는 긴 영숫자 목록입니다. @Hauke ​​Laging
fenkerbb

2

나는 여기의 대답이 명확하지 않은 것처럼 느낍니다. Mark Wagner의 답변은 그 내용을 다루지 만 상황을 완전히 설명하지는 않습니다.

출력의 행 앞에는 디버그 레벨이 접두어로 표시되어 의미에 대한 힌트를 제공하지만 숫자가 낮을수록 중요합니다. debug3:물건보다 훨씬 덜 중요debug1:

키 파일을 읽을 때 ssh는 먼저 해당 키를 더 이상 사용되지 않는 RSA 키 (이하 "RSA1")로 구문 분석하려고 시도합니다. 이러한 키 SSH PRIVATE KEY FILE FORMAT는 버전 번호로 시작 합니다. 새로운 RSA 키가 모두 시작 -----BEGIN RSA PRIVATE KEY-----됩니다. 다음 identity은 이전 RSA1 스타일 키이며 id_rsa새로운 스타일 의 로그인 시도 입니다.

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type 0
debug1: identity file /home/user/.ssh/identity-cert type -1
debug3: Not a RSA1 key file /home/user/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
[...]
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1

이 시점에서 파일의 키 유형 identitytype 0id_rsa로 식별 했습니다 type 1. 검사하는 다른 파일이 존재하지 않으므로 파일이 없습니다 type -1.

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3

이것은 프로토콜 2이므로 키 identity교환 중에 프로토콜 1 RSA 키 입력 이 무시됩니다.

debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/user/.ssh/id_rsa (0x5622d77426a0)
debug2: key: /home/user/.ssh/id_dsa ((nil))
debug2: key: /home/user/.ssh/id_ecdsa ((nil))

여기서는 사용하려는 키 파일을 상기시킵니다. 왜 누락 된 파일을 거부하지 않았는지, 프로토콜 1 파일 만 거부했는지 확실하지 않지만 ...

debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
[...]
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 372 bytes for a total of 1689
debug1: Server accepts key: pkalg ssh-rsa blen 277

그리고 여기서 id_rsa열쇠를 제공하고 받아들입니다.

간단히 말해서 질문 제목의 문제는 ssh가 키의 실제 문제가 아니라 찾은 키를 구문 분석하는 여러 가지 방법을 시도하는 붉은 청어입니다.


1

먼저 sshd 로그를 확인해야합니다. 즉

less /var/log/secure

보안 로그가있는 유닉스 배포 파일에 따라 다를 수 있습니다. 그러나 당신이 그것을 찾을 때, 그것은 당신이 로그인 할 수없는 이유를 말해야합니다.


1

나는 또한 최근 에이 문제에 직면했다. 제 경우에는 .ssh, rsa 파일, 홈 디렉토리 및 사용자와 관련된 모든 것을 포함하여 모든 권한이 정확했습니다. 문제는 .ssh에서 이전에 생성 된 공개 키를 가지고 있었고 로그인에 사용하는 개인 키와 일치하지 않았다는 것입니다. .ssh에서 공개 키를 제거하면 문제가 해결되었습니다.

ssh-keygen을 사용하여 .ssh 디렉토리를 작성 하여이 펍 키를 생성하여 문제가 발생했습니다.


0

MacOS 10.7.5의 MacBook Pro에서도 같은 문제가있었습니다. 내 키에는 아무런 문제가 없었습니다. 암호화되어 있고 (암호와 같은 방식으로) ssh에 의해 올바르게 암호화되지 않았습니다. ssh-agent문제가있는 것 같습니다 .

이 기사 에 따르면 다음을 시도하십시오.

  1. 넣어 /usr/bin/ssh-agent당신의 로그인 항목에서 (-> 사용자 및 그룹 - 시스템 환경 설정> 사용자 선택 -> 로그인 항목). /usr/bin대화 상자 를 탐색하는 것은 끔찍하기 때문에 기사는 홈 디렉토리 ( ln -s /usr/bin/ssh-agent)에 로그인 항목에 넣은 후에 제거 할 수 있는 링크를 만드는 것을 제안합니다 .

  2. Terminal.app 종료

  3. 기계를 다시 시작하십시오.

  4. 터미널을 열고 ssh 명령을 재 시도하십시오.

나를 위해 일했습니다 (적어도 한 번은 있습니다).

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