ssh는 더 이상 공개 키 인증을 허용하지 않습니다


22

내 컴퓨터가 최근에 들어오는 공개 키 인증 수락을 중지했습니다. Windows 컴퓨터에서 우분투 11.04 데스크톱을 사용합니다. 나는 미인 대회와 퍼티를 사용합니다. 연결할 수 있지만 설정 한 rsa 키가 아닌 대화식 비밀번호 인증으로 만 연결할 수 있습니다.

키가 ~ / .ssh / authorized_keys에 나열되어 있는지 이미 확인했습니다. 이 문제를 어떻게 해결하고 무엇을 확인합니까?


2
모두의 세 가지 첫 번째 검사 ~, ~/.ssh그리고 ~/.ssh/authorized_keys(특히 어떤 그룹 쓰기 권한에서) 당신들만 쓸 수 있습니다. /var/log/auth.log로그인 시도시 작성된 로그 항목을 찾으십시오 . 질문에 복사하여 붙여 넣습니다 (원하는 경우 개인 정보 보호를 위해 이름 편집). 또한 문제가 서버 측에서만 발생하는지 여부를 확인하십시오. 개인 키를 Linux 시스템으로 복사하고 (Putty의 개인 키 파일을 OpenSSH 형식으로 변환해야 함) ssh localhost작동하는지 확인하십시오 .
Gilles 'SO- 악마 중지'10

내 홈 디렉토리는 어떤 이유로 쓰기 가능했습니다. 그것은 그것을 고쳤다. 대답을 받아 들일 수 있도록하십시오.
Andrew Redd

답변:


28

공개 키 인증이 작동하지 않는 경우 : 서버 측에서 홈 디렉토리 ( ~), ~/.ssh디렉토리 및 ~/.ssh/authorized_keys파일이 모두 소유자 만 쓸 수 있는지 확인하십시오 . 특히, 사용자가 그룹에 혼자있는 경우에도 그룹에 의해 쓰기 가능 권한이 없어야합니다. chmod 755또는 chmod 700괜찮습니다 chmod 770.

문제가있을 때 확인해야 할 사항 :

  • ssh -vvv많은 디버깅 출력을 보려면 실행 하십시오. ssh에 연결할 수없는 이유를 묻는 질문을 게시하는 경우이 출력을 포함 시키십시오 (호스트 및 사용자 이름을 익명화 할 수 있음).
  • 가능하면 서버 로그인을 확인하십시오 /var/log/auth.log.
  • 공개 키 인증이 작동하지 않으면 권한, 특히 그룹 비트 (위 참조)를 다시 확인하십시오.

( U & L 태그 위키 에서 AU로 복사 됨 )
Gilles 'SO-stop

1
좋은 대답입니다! 오 : 내 홈 디렉토리 잊어
RobAu

최신 버전의 ssh (또는 sshd)를 실행중인 경우 보안 문제로 인해 기본적으로 DSA 키가 더 이상 지원되지 않습니다. 유일한 실제 수정은 RSA 이상의 키로 업그레이드하는 것입니다.
Mikko Rantalainen

내 홈 폴더의 권한과 무엇을 변경 했습니까? SSH가 잠겨있었습니다! ssh 키를 변경했습니다. 아니요, 서버는 여전히 연결을 거부합니다! 나는 해결책을 찾으려고 미쳤고 내 홈 폴더에 대한 chmod 700 의 대답으로 ssh가 작동하기 시작했습니다 !!!!!!! 감사! 솔루션을 찾는 동안 터미널 연결이 끊어지면 서버에서 완전히 잠 깁니다. 따라서 홈 폴더 권한으로 재생하지 않도록주의하십시오! (방금 .ssh 폴더가 아닌 여전히 내 홈 폴더 권한을 변경했지만 여전히 SSH에서 잠겼습니다)
Tarik


5

디렉토리에 대한 권한을 확인하고 "."가있는 경우 그 직후에는 selinux가 활성화되어 키 교환을 망칠 수 있으며 기본값은 수동 암호 식별입니다.

http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html 의 지침에 따라 문제 해결을 위해 SELinux를 비활성화 하거나 / etc를 편집하면됩니다. / selinux / config 파일을 "enforcing"에서 "disabled"로 변경하십시오.

이것이 도움이되기를 바랍니다.


selinux를 활성화했지만 비활성화해도 문제가 해결되지 않았습니다. 나를 위해 트릭을 한 것은 chmod 600 ~/.ssh/authorized_keys파일이 그룹 작성 가능하다는 것입니다. ( pyrosoft.co.uk/blog/2013/01/12/… 를 통해 )
David Carboni

이것은 나를 도왔다! 고맙습니다!
907 년

올바른 SELinux 컨텍스트를 설정하여 SELinux와 작동하는 SSH 인증을 얻을 수도 있습니다. 홈 디렉토리 ( restorecon ~ -R) 에서 시스템 구성 컨텍스트를 복원 하는 것이 좋습니다.
Josh Kelley

4

/ etc / ssh / sshd_config의 설정이 올바른지 확인합니다.

PKI 만 사용하고 비밀번호를 허용하지 않으려면 다음 줄을 찾으십시오.

#PasswordAuthentication yes 

파일에서 주석 처리를 제거하고

PasswordAuthenticate no

또한 설정의 균형을 통해 이해가되도록합니다. 특히, DSA가 손상되었다는 것을 알고 있으므로 RSA 키를 사용하도록하십시오.


11
비밀번호 인증을 비활성화하는 방법에 대해 설명합니다. 이것은 공개 키 인증 작업을 수행하는 데 도움이되지 않습니다 (공개 키가 먼저 시도 됨). Andrew : 공개 키 인증이 작동 할 때까지 비밀번호 인증을 비활성화하지 마십시오!
Gilles 'SO- 악마 중지'10

2

문제의 한 가지 가능한 원인은 DSA 키가 있지만 이제 SSH (기본적으로)는 RSA 키를 요구하는 것입니다. 16.04로 업그레이드 할 때 문제가 발생했습니다. 여기에서 더 많은 것을 볼 수 있지만 짧은 대답은 다음을 추가합니다 ~/.ssh/config.

PubkeyAcceptedKeyTypes ssh-dss

1

/ etc / ssh / sshd_config에서 "PasswordAuthentication yes"의 주석을 해제하여이 문제를 해결했습니다.


1

서로 다른 두 컴퓨터 간의 통신 문제 해결이 필요하기 때문에 ~/.ssh클라이언트쪽에 두 개의 개인 키가 있습니다.

~/.ssh/identity내가해야했던 것처럼 각 개인 호스트로 각 서버 호스트를 구성하는 대신 모든 호스트에 대해 보조 (이 경우 잘못된) 키를 구성했습니다.

Host *
IdentityFile ~/.ssh/identity_b

수정으로 ~/.ssh/identity문제가 해결되었습니다.

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

방금 같은 문제가 있었지만 파일의 chmod소유권이 없다는 것이 밝혀 졌기 때문에 사용 권한을 변경하는 것이 도움이되지 않았습니다 ~/.ssh/authorized_keys. 다음을 사용하여 .ssh디렉토리의 소유권을 변경할 수 있습니다 .

sudo chown -R "$USER" ~/.ssh

-1

어떻게 든 이것이 나를 위해 일했습니다.

root @ kaiser : ~ # vim / etc / ssh / sshd_config

이 줄을 yes에서 no로 변경하십시오. 28 StrictModes no

다시 시도하십시오

sysadmin @ suselinux1 : ~> con sysadmin kaiser Ubuntu 12.04.1 LTS에 오신 것을 환영합니다 (GNU / Linux 3.2.0-25-generic i686)

마지막 로그인 : 2012 년 11 월 9 일 금요일 15:40:11 from 10.1.3.25 sysadmin @ kaiser : ~ $ date nov nov 9 17:53:11 CST 2012 sysadmin @ kaiser : ~ $


3
그것이 무엇을하고 왜 작동하는지 알지 못하고 무언가를하는 것은 용납 될 수 있지만, 보안 시스템을 다루는 경우 나쁘고 공정하다고 제안하는 것은 좋지 않습니다.
Mahesh

2
동의했다. 이 더 잘 만들 수있는 인센티브가 될 수 있도록 sshd정확하게 "좋은 토요일 독서"범주에 속하지 않는 문서를,
code_monk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.