SSH 공개 키가 서버로 전송되지 않습니다


33

나는 몇 시간 동안이 문제로 어려움을 겪어 왔으므로 도움을 주시면 감사하겠습니다 ...

나는 sshOSX의 공개 키로 할 수있는 2x 서버를 가지고 있으며 전혀 문제가 없으므로 모든 것이 잘되어 있다고 확신 sshd_config합니다.

rsync두 서버를 동기화하고 ssh공개 키를 사용하여 서버 A (서버 )에 서버 B (백업)가 필요 하도록 크론 작업을 구성하려고합니다 .

나는 내 키가 왜 내 공개 키를 찾지 못하는지 알아낼 수 없습니다. 키가 있고 ~/.ssh/(예 :) /root/.ssh모든 파일 권한이 A & B에서 올바른지 확인하십시오.

이것은 출력입니다.

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

또한 존재하지 않는 개인 키를 찾고 있습니다 ...

drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root  403 May 25 01:37 authorized_keys
-rw-------. 1 root root    0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root  405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root  395 May 25 02:36 known_hosts

2
ls -la /root/.ssh/
mreithub

@mreithub 빠른 답장을 보내 주셔서 감사합니다 (위에 추가).
Danny

3
_tm1키 파일 이름에서 (예 : mv id_rsa_tm1 id_rsaand mv id_rsa_tm1.pub id_rsa.pub)를 제거해보십시오
mreithub

@mreithub 그것은 효과가 있었다! 고마워요,하지만 왜 파일 이름에 다른 문자열을 추가 할 수 없는지 이해할 수 없습니다. iMac에서 아무 문제없이 서버에 연결합니다. 즉, 문제없이 id_rsa.tm1.imac.pub를 사용할 수 있습니다. 여러 키를 원하면 어떻게합니까?
Danny

답변:


22

ssh 매뉴얼 페이지를 살펴보십시오.

   -i identity_file
          Selects a file from which the identity (private key) for public
          key authentication is read.  The default is ~/.ssh/identity for
          protocol   version   1,   and  ~/.ssh/id_dsa,  ~/.ssh/id_ecdsa,
          ~/.ssh/id_ed25519 and ~/.ssh/id_rsa  for  protocol  version  2.
          Identity files may also be specified on a per-host basis in the
          configuration file.  It is possible to have multiple -i options
          (and  multiple  identities  specified  in configuration files).

또는 ssh_config 매뉴얼 페이지 :

   IdentityFile
          Specifies a file from which the user's DSA, ECDSA,  ED25519  or
          RSA   authentication   identity   is   read.   The  default  is
          ~/.ssh/identity for  protocol  version  1,  and  ~/.ssh/id_dsa,
          ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for proto‐
          col version 2.  Additionally, any identities represented by the
          authentication  agent  will  be  used for authentication unless
          IdentitiesOnly is set.

키를 지정하지 않으면 시도되는 특수 파일 이름이 몇 개 있습니다. 이것들은 또한 로그 출력에 표시되는 파일입니다.

이름이 다른 파일에서 키를 사용하려면 세 가지 옵션이 있습니다.

  • -i옵션을 사용하여 파일을 명시 적으로 지정하십시오 .
  • IdentityFile옵션을 사용하여 클라이언트 구성에서 파일을 구성하십시오 .
  • 를 사용하여 에이전트에 키를 추가하십시오 ssh-add.

대화식 세션의 경우 에이전트가 가장 유연합니다. 크론 작업의 경우 -i옵션이 아마도 가장 쉬운 방법 일 것입니다.


26

대상 호스트의 형식이 잘못된 인증 된 _ 키 파일이 ssh가 "패킷을 보내지 않았습니다"메시지를 출력하고 pubkey auth :-를 사용하는 대신 비밀번호를 요청하는 또 다른 이유입니다.

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method

이 특별한 경우의 문제 .ssh/authorized_keys는 대상 호스트 에 붙여 넣은 공개 키 데이터에 첫 문자가 누락되었다는 것입니다.

sh-rsa AAAA...

해결책은 단순히 누락 된 "s"를 추가하는 것입니다.

ssh-rsa AAAA...

그래서 :

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...
debug1: Authentication succeeded (publickey).

2
감사합니다.이 오류가 발생할 때마다 원격 호스트 (서버)의 authorized_keys 파일이 잘못 되었기 때문입니다. 오류가 클라이언트에 문제가있는 것처럼 들리지 않기를 바랍니다.
tamale

3
먼저 'i'를 누르지 않고 vim에 붙여 넣기!
Jordan Davidson

나를 위해 그것은 잘못된 것처럼 보이지만 파일을 삭제하고 소스 시스템에서 다시 ssh-copy-id를 다시 작성했습니다. 문제 해결됨.
alvarez

14

질문 의이 정확한 오류 메시지 문자열은 로컬 측에서 일치하지 않는 개인 / 공개 키 쌍의 경우에도 발생할 수 있습니다 . 아니, 그건 말이되지 않지만 단지 무슨 일이 일어나고 있는지 알아 내려고 오랫동안 머리를 찢어 버렸습니다.

  • 원격 시스템 A가에 .ssh/mykey.pub복사했습니다 .ssh/authorized_keys.
  • 로컬 시스템 B에는 .ssh/mykey시스템 A의 공개 키와 일치하는 올바른 개인 키가 있지만 .ssh/mykey.pub일치하지 않는 파일, 이전 버전의 대체 키가있을 수 있습니다.

B에서 A ( ssh -i mykey A) 로의 SSH 는 문제의 메시지와 함께 실패합니다. 특히 -vvssh 클라이언트에서 켜면 다음과 같습니다.

개인 키 시도 : .ssh / mykey
우리는 패킷을 보내지 않았습니다.

실제 키가 시도되지 않았기 때문에 거짓말입니다. 일부 일치하는 이름을 가진 로컬 공개 키 파일을 사용하여 작동 가능성이 있는지 확인한 다음 일치하지 않을 때 실제로 아무것도하지 않았습니다. 어느 쪽의 디버그 정보도 실제로 문제를 암시하지 않습니다.


와우! 이것도 저를 위해 많은 시간을 죽였습니다! 머리카락을 잃어 버렸습니다! 그래서 내 경우에는 이것도 마찬가지였습니다. 내 sshd 호스트가하지 않은 맨 끝에 name @ host 항목이 포함 된 것을 제외하고는 내 pub 키 만 클라이언트 측 authorized_keys 파일에있었습니다. 나는 당신이 각 끝에서 authorized_keys를 일치시켜야한다는 것을 몰랐습니다. 사실, 나는 이전에 그것들과 일치했다고 생각하지 않습니다. 이것은 내 클라이언트가 CentOS 7 인 경우에만 문제가되었으며 Ubuntu 12.04에 연결했습니다. MacOS 또는 다른 우분투 시스템에서 나가는 것은 잘 작동했습니다.
gregthegeek

이 문제를 어떻게 해결합니까? 내 문제를 T에 설명했습니다. 여러 시스템간에 도약하기 때문에 문제가 더욱 악화됩니다. 실제로 파일을 지정하는 것은 효과가 없습니다
Madivad

@Madivad 공개 / 개인 키를 로컬로 일치 시키거나 공개 키를 전혀 사용하지 않음으로써 문제를 해결합니다.
Caleb

@Caleb 그것은 (단지 페니가 떨어 졌다고 생각하지 않는 한)보다 간단하게 들립니다. 이것은 공개 키와 개인 키를 SSH 클라이언트로 사용하려는 각 시스템에 복사해야한다는 것을 의미합니까? IdentityFile을 만들려고했지만 분명히 잘못 사용하고 있습니다.
Madivad

클라이언트에서 고아 id_rsa.pub 파일을 제거하면이 문제가 해결되었습니다. 우분투 12.04 서버에 연결하는 새로운 Centos 7 클라이언트 에서이 문제가 다시 발생했습니다. certified_keys name @ host 문제가 해결되지 않았습니다. 디렉토리, perms, 정확히 동일한 id_rsa 키 파일을 일치 시켰지만 여분의 id_rsa.pub (클라이언트 측)가있었습니다. 제거되어 이제 작동합니다. 나는 ssh-keygen을 실행하여 디렉토리를 빨리 만든 다음 알려진 좋은 시스템에서 rsync를 수행했습니다. 그러나 여분의 펍 파일은 개인 키와 일치하지 않습니다 (소스 rsync에 없었습니다). 일치하지 않는 펍 파일을 다시 추가하여 확인했습니다. 일치하거나 제거하십시오.
gregthegeek

5

ssh가 찾고있는 기본 파일 이름은 id_rsaand id_rsa.pub입니다.

다른 파일 이름을 ssh_config사용하려면 IdentityFile설정을 사용 하거나 ssh 명령 줄 매개 변수 를 통해 파일 이름을 지정해야합니다 -i.


4

RedHat에서 동일한 문제가 발생했습니다. 로그를 확인하고 홈 디렉토리에 잘못된 사용자 권한이 있음을 발견했습니다.

sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user

홈 디렉토리 권한을 수정하면이 문제가 해결되었습니다.


4
U + L 스택 교환 사이트에 오신 것을 환영합니다. 올바른 사용 권한의 모양에 대한 예를 제공하여 다른 사람에게보다 유용한 답변을 제공 할 수 있습니다.
Erathiel

~/.sshdir을 제외하고는 매우 비슷한 문제가있었습니다 . ~/.ssh권한이 0775 인 Fedora 28 이상에서는 공개 / 개인 키로 연결할 수 없었습니다. 그래서 나는 권한을 0755로 바꾸었고 매력처럼 일했습니다 :)
PovilasB

3

데비안 / 우분투에서 디버깅하는 간단한 방법은 다음과 같습니다.

tail -f /var/log/auth.log

다른 터미널에서 연결을 시도하면 오류가 표시됩니다 ...

필자의 경우 / root 디렉토리는 기본값이 아닌 770이고 700이 아닙니다. 오류는 "인증 거부 : 디렉토리 / root에 대한 잘못된 소유권 또는 모드"입니다.

이 문제를 해결하면 완료됩니다.


정말 고마워요! 당신은 내 하루를 구했다!
Anthony

그것은 그것을 명확히하는 데 도움이되었습니다. 내 사용자는 AllowUsers에 나열되지 않아 123.123.123.123과 같은 사용자허용되지 않는다고 말합니다 . 정말 고맙습니다!
aexl


0

실행 후

ssh-copy-id user@remote-host

정상적으로 작동합니다. 그러나 실패한 경우 다음을 시도하십시오. 나중에 로그인하려는 사용자로 원격 호스트에 로그인하고 다음을 실행하십시오.

ssh-keygen

그것은 나를 도왔다.


0

그래서 나에게 일어난 일은 로컬 컴퓨터에서 액세스 할 수있는 2 개의 VM이 있다는 것입니다 (2 개의 키 id_rsa.pub 및 id_rsa2.pub). 내 ssh 연결이 ssh user@xx.xx.xx.xx 연결에 기본적으로 id_rsa.pub을 사용하고 있음을 깨달았습니다. 구성 파일을 추가하고 다음과 같이 모든 호스트에 사용할 ID를 지정하여 문제를 해결했습니다.

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2

-2

고객:

vim /etc/ssh/ssh_config

#add your key 
IdentityFile ~/.ssh/yourkey

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