SSH 공개 키 인증이 작동하지 않음 [닫힘]


41

내 서버에서 CentOS 5.3을 실행 중입니다. Leopard를 실행하는 Mac을 사용하고 있습니다. 나는 이것에 대한 책임이 무엇인지 모른다.

비밀번호 인증을 통해 서버에 정상적으로 로그온 할 수 있습니다. PKA 설정을위한 모든 단계를 거쳤습니다 ( http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html에 설명되어 있음 ). SSH를 사용하므로 공개 키 확인을 거부합니다. 명령 사용

ssh -vvv user@host

(여기서 -vvv는 상세 수준을 최대 수준으로 높입니다) 다음과 같은 관련 결과가 나타납니다.

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

비밀번호를 묻는 메시지가 나타납니다. 내가 문제를 강제하려고하면

ssh -vvv -o PreferredAuthentications=publickey user@host

나는 얻다

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

따라서 서버가 공개 키 인증 방법을 수락한다고 말하고 SSH 클라이언트가 주장하지만, 나는 반박합니다. (위의 "공개 키 제공 :"행이 눈에 띄지 않게 표시됩니다.) 제안 사항이 있습니까?

ssh 

단순히 더 상세이 필요 아니라 당신이 생각하는 줄 중요한 전체 출력을 포함하지 않는다 "는 ssh -v"를 사용
cstamas

이 질문은 더 이상 대답 할 수없고 품질이 낮은 답변을 끌어 들이기 때문에 종료되었습니다.
HopelessN00b

답변:


44

Centos 머신에 다음이 있는지 확인하십시오.

RSAAuthentication yes
PubkeyAuthentication yes

sshd_config에서

centos 머신의 ~ / .ssh / 디렉토리에 대한 적절한 권한이 있는지 확인하십시오.

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

트릭을해야합니다.


1
올바른 권한과 파일 이름 (때때로 Authorized_keys2, 때로는 2가없는 경우)이 매우 중요합니다!
brandstaetter

4
authorized_keys 파일의 권한 은 매우 중요한 힌트입니다. 감사.
Kane

7
chmod go-w ~/아직 그렇지 않은 경우 에도 필요할 수 있습니다 .
tylerl

1
원격 서버의 홈 디렉토리 권한이 있는지 또한 확인 755(Jinyu의 리우 아래 언급으로)
아틸라 Fulop

1
다른 운영 체제에서 SSH 구성 파일도 다음과 같은 환경에있을 수 있습니다./etc/ssh/ssh_config
Yoshua Wuyts

17

비슷한 문제가 발생했습니다. 원격 PC에서 공개 키 인증을 사용하여 CentOs 6 서버에 로그인 할 수 없습니다. 필자의 경우 문제는 SELinux 관련 문제였습니다. 로그인하려는 사용자의 홈 디렉토리에는 메시지 보안 컨텍스트가 있습니다. restorecon도구 를 사용 하여이 문제를 해결했습니다 .

restorecon -Rv /home

2
고마워, Gareth! "restorecon -Rv /root/.ssh"는 트릭을 훌륭하게 수행했습니다.
tbroberg

추가 설명 :이 명령은 SELinux에 파일의 SELinux 태그를 /home일반적으로 디렉토리 레이아웃에있는 파일로 재설정하도록 지시 합니다 /home.
rakslice

루트로 로그인한다면restorecon -Rv /root
youfu

13

1- / etc / ssh / sshd_config를 확인하십시오.

RSA 인증 예
Pubkey 인증 예

2- 원격 시스템의 보안 로그를 확인하고 세부 사항 sshd 디먼 오류 로그를 찾으십시오. 예를 들어 내 우분투에서

# grep 'sshd'/ var / log / secure | grep '인증 거부'| 꼬리 -5
8 월 4 일 06:20:22 xxx sshd [16860] : 인증 거부 : / home / xxx 디렉토리에 대한 소유권 또는 모드가 잘못되었습니다
8 월 4 일 06:20:22 xxx sshd [16860] : 인증 거부 : / home / xxx 디렉토리에 대한 소유권 또는 모드가 잘못되었습니다
8 월 4 일 06:21:21 xxx sshd [17028] : 인증 거부 : / home / xxx 디렉토리에 대한 소유권 또는 모드가 잘못되었습니다
8 월 4 일 06:21:21 xxx sshd [17028] : 인증 거부 : / home / xxx 디렉토리에 대한 소유권 또는 모드가 잘못되었습니다
8 월 4 일 06:27:39 xxx sshd [20362] : 인증 거부 : / home / xxx 디렉토리에 대한 소유권 또는 모드가 잘못되었습니다

그런 다음 / home / xxx 디렉토리의 소유권과 모드를 확인하십시오.

chmod 755 / home / xxx

1
시스템의 로그 파일 확인은 매우 중요한 힌트입니다.
Kane

1
755의 홈 디렉토리 권한이 도움이되었습니다.
Ben

11

로컬 및 원격 시스템 모두에 대해 권한이 올 바르고 파일 구조 (특히 철자법)가 올바른지 다시 확인하십시오. 당신이 참조하는 URL은 그것들을 모두 나타내지 만, 당신이 일치하는 것을 확인할 가치가 있습니다. 일반적으로 권한은 관련 오류를 발생시킵니다.

CentOS 5.3 상자의 sshd_config 상자가 PubkeyAuthentication 또는 RSAAuthentication을 허용하도록 설정되어 있는지 확인 했습니까?

CentOS 시스템에서 SSH 서버 로그를 확인하십시오. 자세한 정보가 제공 될 수 있습니다. CentOS가 데비안이 수행하는 블랙리스트 ssh 키 검사를 수행하는지 확실하지 않지만 -vvv 출력이 진행되는 한 상대적으로 조용한 ssh 공개 키 거부를 보았지만 로그는 진행 상황을 명확하게 설명했습니다.


7

알았다! 그것이 클라이언트 측 문제였습니다. (서버 측 문제로 인해 더 유용한 디버그 출력이 생성 될 것이라고 생각합니다.) 저에게 알려지지 않은 이유로 Mac에서는 / etc / ssh_config 파일에 다음 줄이 있습니다.

PubkeyAuthentication = no

나는 그 한 줄을 주석 처리했으며 이제는 모든 것이 잘 작동합니다.


4

파일 / 디렉토리 모드 외에도 소유권이 올바른지 확인하십시오! 사용자는 자신의 홈 디렉토리 인 .ssh /와 그 안의 파일을 소유해야합니다.

chown -R $user:$user /home/$user내 ssh 오류를 극복 하기 위해 달려야 했습니다.


+1, 내 시스템 중 하나에서 .ssh에 대한 권한이 맞지만 누군가 계정의 홈 디렉토리를 777로 만들었습니다.
GargantuChet

2

또한 키를 자동으로 공급할 수 있는지 확인하십시오. 또는 테스트하지 않을 경우 -i path / to / key를 사용하십시오.


2

나에게 구성 문제처럼 들린다. 다니엘이 제안한 것처럼 확인해야 할 두 가지가 있습니다.

  1. SSH 키 $HOME/.ssh/authorized_keys는 읽을 수 있습니다. 과
  2. SSHd는 공개 키 로그인을 허용하도록 구성되어 있습니다.

2

로그인하려는 모든 사용자 이름을 확인하십시오. 기본적으로 로컬 컴퓨터의 사용자 이름입니다.


1

클라이언트의 출력 결과는 ssh -v프로토콜의 특정 단계에서 문제가 있음을 나타내지 만 서버의 문제로 인해 클라이언트에게 원인을 알리지 않습니다. 서버 로그 파일을 확인하여 문제점을 찾으십시오. 그렇게 root하려면 권한이 있어야합니다. 예를 들어 sshdsyslog에 로그인하도록 구성된 경우 메시지가에있을 수 있습니다 /var/log/secure. 이것들처럼 :

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

이 경우의 이유는 (멍청한) 기본값 default입니다 0002. 즉, 그룹에 대한 쓰기 권한이 있습니다. (그룹 이름 = username이지만 여전히) SSH 데몬은 사용자 이외의 다른 사람이 조작 할 수있는 파일을 신뢰하지 않습니다 (물론 및 root). 을 사용하여 문제를 해결할 수 있습니다 chmod.

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file

1

나는 페도라 코어 16에서 센트 5.5로 액세스하는 것과 같은 문제에 갇혔다.

로그와 자세한 내용은 정확히 동일하게 보입니다.

문제는 공개 키였습니다. 일부 가짜 데이터를 가져 와서 재생성하고 sshd_server에 게시하면 sshd_client가 키 정보를 보내고 있지만 서버에서 인식하지 못합니다 (authed_keys의 키와 일치하지 않습니다)


-2

이것에 의해 물린 또 다른. 긴 검색 후 개인 키 대신 공개 키 (-i 옵션 사용)를 ssh에 명시 적으로 공급하고있는 것으로 나타났습니다. 도!

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