ssh-copy-id가 작동하지 않습니다


19

CentOS 5.4에서 비밀번호가없는 SSH 로그인을 설정하려고합니다.

  1. 클라이언트에서 RSA 공개 키를 생성했습니다.
  2. 클라이언트에서 서버로의 ssh-copy-id.
  3. 확인 된 ~ / .ssh / authorized_keys에 클라이언트 키가 포함되어 있습니다.

클라이언트는 여전히 비밀번호를 묻습니다. 내가 놓친 게 무엇입니까?

감사.

편집 : ssh_config 및 권한을 확인했습니다. 이것은 클라이언트의 디버그 정보입니다.

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

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: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.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
saguna@192.168.1.75's password: 

나도 이것을 얻는다 :(
Matt Joiner

답변:


19

~ / .ssh / authorized_keys가 올바른 모드에 있지 않기 때문에 9/10 배입니다.

chmod 600 ~/.ssh/authorized_keys

2
참고로, 나는 github.com/centic9/generate-and-send-ssh-key에 작은 스크립트를 작성 하여 필요한 단계를 한 번에 실행하고 추가로 항상 두통을 유발하는 모든 파일 / 디렉토리 권한을 보장합니다 ...
centic

5
이것이 누군가에게 효과가 없다면 @Gilles의 답변도 봐야합니다. 특히, 사용자 이외의 다른 사람 이 홈 및~/.ssh 디렉토리를 쓸 수 없습니다.
ostrokach

나는 이것이 오래되었다는 것을 알고 있지만 @centic에게 100 만 감사합니다. 내 권한이 정확했지만 $ HOME 및 .ssh / 디렉토리를 확인하는 데 신경 쓰지 않았습니다.
jdferreira

나를 위해 일했다. 감사!
Ivan Kovtun

12

/ etc / ssh / sshd_config를 체크인하여 키 인증을 허용하십시오. 당신은 그것에 이와 같은 것을 가지고 있어야하며, 주석이 주석 처리되어 있지 않은지 확인하십시오 :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

추신 : 파일 수정 후 sshd를 다시 시작하는 것을 잊지 마십시오 (/etc/init.d/sshd restart)


Patkos Csaba의 답변 외에도 로컬 및 원격 ~ / .ssh 폴더의 권한을 확인하십시오.

내 경우에는 AuthorizedKeysFile주석 처리되었으며에 대한 절대 경로를 사용해야했습니다 authorized_keys.
Andrew

'인증 에이전트에 대한 연결을 열 수 없습니다.'라는 메시지가 나타납니다. ssh-add를 시도 할 때
Manticore

이것은 선택된 답변이어야합니다
Francisco Tapia

아마도 당신은 의견을 이해하지 못할 수도 있습니다. 주석 처리 된 줄은 기본값을 보여줍니다. 기본값을 원하는 경우 주석을 해제 할 필요가 없습니다. 기본값을 재정의하려는 경우 속성의 주석 처리를 제거하면됩니다.
clearlight

5

내 시스템에서 문제는 사용자 디렉토리 (/ home / username)에 잘못된 권한이 설정되어 있음을 발견했습니다. 그것은이었다 drwxr-x-w-그것은 일 필요 drwxr-xr-x(쓰기 권한 만이 소유자로). 해결책은 chmod를 사용하는 것입니다.

sudo chmod 0755 /home/username

1
야아! 나를 위해 일했다. ssh는 권한을 침해했기 때문에 비밀번호 프롬프트를 표시했습니다.
clearlight

4

나는 여기에 전문가가 아니지만 그러한 문제를 겪었습니다. 여기에 다른 모든 제안 외에도 2 센트 있습니다.

때때로 ssh-copy-id잘못된 키를 원격 서버에 복사하거나 (여러 키가 있거나 키 파일에 기본 이름이 아닌 이름을 사용하는 경우 발생할 수 있음) 인증 에이전트가 잘못 구성되었습니다.

매뉴얼 페이지 에서 인용 한 내용은 다음과 같습니다 .

-i 옵션이 제공되면 ssh-agent에 키가 있는지 여부에 관계없이 ID 파일 (기본값은 ~ / .ssh / id_rsa.pub)이 사용됩니다. 그렇지 않으면 다음과 같은 경우 : ssh-add -L이 출력을 제공하면 ID 파일보다 우선하여이를 사용합니다.

따라서 기본적으로 확인하고 싶습니다.

  • 시스템 인증 에이전트 (일반적으로 ssh-agent)에 사용하려는 키가 표시됩니다 ( ssh-add -L출력 확인 ).
  • ssh-copy-id원격 시스템에 동일한 키를 복사 (단지 암호를 사용하여 원격 서버에 로그인의 내용을 확인 ~/.ssh/authorized_keys)
    • 원격 서버에 원하는 키가 없으면 암시 적 ssh-copy-id으로 복사 할 키를 알려줄 수 있습니다 .ssh-copy-id -i ~/.ssh/some_public_key

희망이 도움이됩니다.


1
니가 끝냈어! ssh-copy-id 문제를 파헤 치면 다음 DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)과 같습니다. , 이것은 알파벳 순서의 첫 번째 키로 기본 설정됩니다. 내 경우에는 id_boot2docker.pub(boot2docker ssh 물건의 기본 이름입니다). 주위에 다른 ssh-copy-id 구현이있는 것처럼 보입니다. 광산은에서 왔으며 brew install ssh-copy-id, 차례로 openssh-portable에서 가져옵니다. 매뉴얼 페이지에서이 동작을 명시 적으로 언급합니다 ...
Christian Ulbrich

3

가장 일반적인 문제는 서버 측에서 유효하지 않은 권한입니다. 홈 디렉토리의 어느 것도 선택하지, ~/.ssh그리고 ~/.ssh/authorized_keys누구나 쓸 수 있지만 당신은 (특히 그들은 그룹 - 쓰기가 아니어야합니다).

이것이 문제가 아닌 경우 ssh -vvv server, 클라이언트의 대화보기를 실행 하고보십시오. 특히 클라이언트가 서버와 키를 시도하고 있는지 확인하십시오.


감사합니다!!! 나는 이유를 이해하지 않지만, 홈 디렉토리 , ~/.ssh그리고 ~/.ssh/authorized_keys사람이 있지만으로 쓸 수 없습니다.
ostrokach

2

위의 모든 것 외에도 항상 sshd 로그 파일을 확인할 수 있습니다.

/var/log/auth.log

1

다른 수정을 시도했지만 홈 디렉토리를 다른 사람이 쓸 수 없도록 변경해야한다는 것을 알았습니다. 홈 디렉토리는 777입니다. 755로 변경했는데 효과가있었습니다.


1
@dulcana를 환영합니다. 그는 passwrodless ssh 로그인을 설정하려고 시도합니다. 퍼미 넌스를 755로 변경하면 문제를 해결하는 데 어떻게 도움이됩니까?
Francisco Tapia

@FranciscoTapia는 sshd가 다른 사용자가 그룹이나 다른 사람이 파일이나 부모를 작성할 수있는 ssh 키로의 로그인을 거부하여, 권한이 부여 된 keys 파일을 악의적으로 만들지 못하도록하기 때문입니다. 다른 답변들도 이것을 언급했습니다.
Ángel

0

필자의 경우 / etc / ssh / sshd_config에는 다음 매개 변수가 포함되어 있습니다.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

그러나 ssh-copy-id는 authorized_keys라는 이름의 파일을 만들었으므로 새 이름으로 항목을 수정해야했습니다. 더 이상 사용되지 않는 certified_keys2에 대한 자세한 정보


0

최신 CentOS 7에 대한 Omer Dagan의 답변을 보완하기 위해 다음을 사용하십시오.

journalctl -f -u sshd

서버에서 sshd 로그를 확인하십시오.


-1

문제는 / etc / ssh / ssh_config에서 RSAAuthentication이 비활성화되었다는 것입니다.

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