이 ssh 오류는 무엇을 의미합니까?


9

이것이 나의 최후의 수단이다. 몇 시간 동안 여기서 문제를 파악하려고 노력했습니다.

거래는 다음과 같습니다. 개인 컴퓨터 키 1을 개인 컴퓨터 2에 복사했습니다. 컴퓨터 # 1은 공개 키를 사용하여 ssh를 통해 서버에 연결할 수 있지만 서버 # 2는 서버에 연결하려고 할 때 다음과 같은 출력을 제공합니다.

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa user@192.168.1.244 -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace

...


Permission denied (publickey).

분명히 생략 한 디버그 출력이 더 많으며 요청시 제공 할 수 있습니다. 그러나 개인 키 파일이 마음에 들지 않는다고 확신합니다.

또한 기계 # 1에서 기계 # 2로 복사하는 방법과 관련이 있다는 의혹이있었습니다. 개인 키의 텍스트를 플래시 드라이브에 복사 / 붙여 넣기했습니다. 그러나이 방법을 다른 작동하는 개인 키 파일에 복제하고 원본을 복사 / 붙여 넣은 파일과 비교하면 동일한 문제입니다.

나는 이것으로 어려움을 겪고있다. 키가 마음에 들지 않는 이유에 대한 정보를 조금 더 얻을 수 있다면 확실하게 해결할 수 있습니다. 누구든지 이것에 대한 아이디어가 있습니까? ssh에게 파일이 실제로 RSA 키임을 알려주는 메타 데이터가 있습니까?


그리고 /var/log/auth.log서버에서 무엇을 말합니까?
울림

설명을 위해 머신 1의 공개 키가 서버에 연결됩니다. 시스템 2에서 실행중인 시스템 1의 개인 키가 서버에 연결되지 않습니까?
Dru

두 컴퓨터에 동일한 키 페어가 있고 공개 키는 서버에 있습니다. 서버에 연결하는 데 문제가없는 클라이언트 컴퓨터 1에서 키를 붙여 넣었습니다. 여기서는이 인증 문제가있는 내 집 컴퓨터 (컴퓨터 2)에 연결했습니다.
kevin

@womble, 불행히도, 나는 서버에 액세스 할 수 없다. 만약 내가 이것을 알아낼 수 있다면 나는 ssh로 바로 들어갈 수있을 것이다 .. Ahh, irony ...;)
kevin

두 클라이언트 시스템의 운영 체제는 무엇입니까? 개인 키 전송으로 인해 줄 끝이 줄을 긋거나 시작 줄 앞의 텍스트 (빈 줄 또는 공백)가 도입되었을 수 있습니까?
Stobor

답변:


7

내 경험상 가장 일반적인 두 가지 키 기반 인증 오류는

  1. $HOME/.ssh디렉토리 에 대한 부적절한 권한
  2. 공개 키를 원격 시스템에 복사하는 중 오류가 발생했습니다

파일 권한

OpenSSH는 자신을 보호하기 위해 많은 노력을 기울입니다. 이 문제가 발생하는 가장 영향을 미치는 사용자는 로컬 ssh 폴더에 액세스 할 수있는 사람을 엄격하게 제한하는 것입니다. 당신은 정말로 당신과 오직 당신 만이 디렉토리에 접근하기를 원합니다. 글쎄, uid = 0 인 사람은 그 주위에 좋은 방법이 없습니다. 그래서 당신은 단순히 당신의 권한을 변경하기 만하면 무엇 : chmod -R go-rwx ~/.ssh이 읽고, 쓰고, 즉에게, 소유자를 제외한 모든 사용자에서 SSH를 디렉토리 아래의 모든 파일에 실행 권한을 제거 할 것이다 당신을 .

인증 된 키 문제

공개 키를 포함하는 파일 $HOME/.ssh/authorized_keys은 일반적으로 SSH가 개인 키를 허용하는 방법을 이해하기 위해 매우 특정한 양식에 맞아야합니다. 각 키는 2 개 이상의 필드로 구성되어야합니다.

  1. 사용 된 키 유형 (RSA, DSA, RSA1 등)

각 키와 모든 옵션 및 구성 요소는이 파일에서 한 줄에 하나씩 나열되어야합니다. 키는 매우 길기 때문에 종종 터미널에서 줄 바꿈되어 두 줄로 나타납니다. 때로는 복사 / 붙여 넣기를 시도 할 때 혼란을 야기 할 수 있습니다. 때로는 키가 화면에서 줄 바꿈 될 때마다 하나 이상의 줄 바꿈이 삽입되기 때문입니다. 이 문제를 해결 하는 것은 쉘 초보자에게는 조금 까다로울 있습니다.

실행 해보
wc -l ~/.ssh/authorized_keys
십시오 파일의 줄 수를 인쇄합니다. 해당 숫자를 파일에있을 것으로 예상되는 키 수와 비교하십시오. 이 하나의 키만 허용 할 경우 공개 키 파일의 사본을 만들 수 있습니다. 공개 키 파일은 승인 된 키 파일과 형식이 동일하기 때문입니다. 뭔가 같은
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
동일한 시스템에서 공개 키를 가지고 있다면 당신이 할 수있는, 또는
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys

또한 원격 호스트의 로그 파일을보고 오류가보고되는지 확인하십시오. 파일은 대부분 /var/log/secure.log또는 /var/log/auth입니다.


1
안녕하세요, 노력해 주셔서 감사합니다. 고맙습니다. 권한 문제가 아닙니다. 권한이 올바른지 확인했습니다. (주의 사항으로 추가해야합니다). 또한 지금은 원래 키에 액세스 할 수 없지만 사용중인 키를 복사하는 데 사용한 프로세스를 복제했습니다. 심지어 파일이 동일한 지 확인하기 위해 md5sum을 수행했습니다. 말이 되나요?
케빈

1
그리고 다시 서버에 액세스 할 수 없습니다. 여기서 전체 문제의 종류 ...;)
kevin

@Scott : 공개 키make a copy of the private key file 여야합니다 (예제 참조)
mlp

0

그러나 시스템 2가 서버에 연결하려면 새 키 쌍을 생성해야합니다. 공개 키는 종종이를 생성 한 사용자와 컴퓨터 이름을 나열합니다. 이것은 서버의 authorized_keys 파일에 분명해야합니다.


2
certified_keys를 볼 때 그것들을 식별하는 데 도움이되는 주석 일뿐입니다. 어쨌든 다시 키를 복사 / 붙여 넣었습니다. 그래서 그들은 동일합니다. 호스트 이름을 확인하는 것이 심각합니다. 그렇다면 쉽게 바꿀 수있었습니다. 도대체, 난 어쨌든 그것을 시도합니다 ...
kevin

0

제공하는 디버그 메시지는 개인 키 파일이 실제로 공개 키 / 승인 된 호스트 파일이라는 가정하에 개인 키 파일을 읽음을 의미합니다. 이것은 치명적인 오류가 아닐 수 있습니다 (연결 상태에서도 이러한 메시지가 나타납니다). "제공"또는 "보냈어요"에 대해 아무 말이 있습니까?


-3

두 서버 간의 ssh 구성 파일을 비교해보십시오.

즉. cat / etc / sshd_config와 같은 것


나는 더 분명 했어야했다. 두 개의 클라이언트, 하나의 서버가 있습니다. 서버 나 다른 클라이언트 컴퓨터에 액세스 할 수 없습니다. 이 빌어 먹을 키가 인증 되 자마자 서버에 액세스 할 수있을 것입니다;)
kevin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.