SSH 공개 키-지원되는 인증 방법이 없습니다 (서버 전송 공개 키).


80

네트워크가 브리지로 설정된 가상 머신에 12.10 서버 설정이 있습니다 (본질적으로 내 스위치에 연결된 컴퓨터로 표시됨).

나는 opensshd를 통해 설치했으며 apt-get내 사용자 이름과 비밀번호로 퍼티를 사용하여 서버에 연결할 수있었습니다.

그런 다음 공개 / 개인 키 인증을 사용하려고 시도했습니다. 나는 다음을 수행했다.

  1. PuttyGen을 사용하여 키를 생성했습니다.
  2. 공개 키를 /etc/ssh/myusername/authorized_keys(암호화 된 홈 디렉토리를 사용 하고 있습니다)로 옮겼습니다 .
  3. 다음 sshd_config과 같이 설정하십시오 .

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

putty 또는 WinSCP를 사용하여 연결할 때 지원되는 인증 방법을 사용할 수 없습니다 (서버 전송 공개 키)라는 오류가 발생합니다.

sshd디버그 모드에서 실행하면 다음 이 표시됩니다.

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?


제 경우에는 두 개의 AWS 인스턴스가 있습니다. 그들 중 하나는 완벽하게 작동하고, 다른 하나는 Intellij Idea를 통해 연결할 때 작동하지만 퍼티는 작동하지 않지만 처음에는 작동했습니다. 그래서 제 경우에는 퍼티에 관한 것이어야합니다
Marian Klühspies

답변:


70

문제 해결됨:

공개 키 파일에 문제가있는 것 같습니다. PuttyGen은 다음과 같은 공개 키 파일을 만듭니다.

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

그러나 이것은 작동하지 않으므로 PuttyGen에서 키를 열고 거기에서 복사하는 것이 좋습니다 (키가 올바른 형식과 한 줄로 표시됨).

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

이것을 붙여 넣으면 authorized_keys작동합니다.


1
나는 authorized_keysvi에서 열었고 모든 줄 바꿈을 제거했으며 효과가있었습니다.
Luke

1
공개 키 파일은 어디에 있습니까? 나는 퍼티만을 사용하고 있습니다.
Syler

1
위의 모든 작업을 수행했지만 여전히 서버가 전송 중입니다. 지원되는 인증 방법이 없습니다 (서버 전송 공개 키)
Al-Alamin

이것이 작동하지 않는다는 것을 어떻게 알았습니까 / 예상되는 형식을 어디에서 찾았습니까?
마이클

"authed_keys에 붙여 넣으면 제대로 작동합니다."라고 말할 때 붙여 넣기가 필요한 경우 @ F21
Mahender Reddy Yasa

19
  1. /etc/ssh/sshd_config파일을 편집 하십시오.
  2. PasswordAuthenticationChallengeResponseAuthentication로 변경하십시오 yes.

3a. ssh를 다시 시작하십시오 /etc/init.d/ssh restart.
또는
3b. 더 잘 사용service sshd restart


실제로 이것은 ftp 소프트웨어를 연결하는 데 문제가있는 경우 유용한 의견입니다
cnu

그것은 나를 위해 작동합니다!
Asinox

8
키 파일을 통한 인증의 전체 목적은 비밀번호 인증 을 피하기위한 것이므로 실제로로 설정해야 PasswordAuthentication합니다 no.
Pere

그것은 나를 도운 유일한 대답입니다. 공개 / 개인 키 인증이 필요하지 않았지만 이상한 메시지가 나타납니다.
Serge Rogatch 7

에 대해 감사 ChallengeResponseAuthentication합니다. 데비안 10.0에서 문제를 해결했습니다.
realtebo

10

내가 희망하는 팁은 내가 가진 두통으로 다른 사람을 도울 수 있습니다. F21은 파일을 저장하는 대신 PuTTYGen 창에서 키를 복사해야하는 것이 맞습니다. 그러나 복사 후 붙여 넣는 방식은 키 작동 여부에 큰 영향을 줄 수 있습니다. 일부 편집기는 붙여 넣을 때 텍스트를 변경하거나 개행 문자 나 인증 된 _ 키 파일을 무효화하는 작업을 수행합니다.

내가 깨뜨릴 가능성이 가장 적은 것으로 밝혀진 것은 전체 문자열을 에코하고 출력을 파일로 리디렉션하는 것입니다. PuTTY를 마우스 오른쪽 단추로 클릭하여 키 문자열을 명령 행에 붙여 넣으면 다음과 같이 작동합니다 (위 예제 참조).

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

당신은 이것으로 끝날 것입니다 :

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

이 방법의 또 다른 장점은 >> 대신 덮어 쓰기 대신 >>를 사용하여이 방법으로 여러 키를 추가 할 수 있다는 것입니다. 예 :

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

누군가에게 도움이되기를 바랍니다.


이것은 4096 비트 키에는 작동하지 않습니다 ... 그것은 내가 생각하는 문자의 터미널 제한을 초과합니다
Freedo

1
나중에 배쉬 기록에서 이것을 제거하는 것이 좋을 수도 있고 아닐 수도 있습니다.
Jason Powers Murray

@JasonPowersMurray : 공개 키입니다. 공개 키 암호화 시스템은 키를 게시 할 때 보안을 유지하도록 설계, 그래서 bash는 역사와 다른 공개 키를 기록 괜찮다된다.
David Cary

9

우리는 이미 올바른 유형의 키를 사용하고있었습니다 (pem 대신 ppk).

우리의 경우, 서버 사용자 폴더에서 authorized_keys의 파일 권한에 문제가있었습니다. -rw-r--r이어야합니다. ...- rw-rw-r--입니다.

ssh는 파일 perms에 대해 매우 까다 롭습니다.


올바른 방향을 알려 주셔서 감사합니다. 우리의 경우 소유자와 권한이 모두 잘못되었습니다.
Zsolti

ssh를 통해 액세스 할 수 없으므로 파일 권한을 변경하는 방법은 무엇입니까? 다른 방법이 있습니까?
jit

1
또한 소유권, 그룹 및 권한 문제였습니다. 여기에 표시된 것처럼 ( stackoverflow.com/a/36808935/384670 ), 내가 사용해야하는 권한은 파일에 대해 600, 디렉토리에 대해 700이었습니다. 또한 소유자와 그룹을 해당 루트가 아닌 사용자로 변경했습니다.
M Katz

5

해결 :

  1. puttyGEN을 다운로드하고 공개 및 개인 키를 생성해야합니다.
  2. 개인 키에 암호를 할당했습니다.
  3. 그런 다음 퍼티에서 개인 키를 구성하십시오. 퍼티-> SSH-> 인증-> 개인을 찾습니다.
  4. 개인 키와 공개 키의 경로가 동일해야합니다.
  5. 서버에서 공개 키를 구성해야합니다. (제 경우에는 서버 담당자와 이야기를 나 he 고 서버에 공개 키를 추가 할 수 있는지 물었습니다). 다른 쪽 (서버) 연결에는 공개 키가 필요합니다.

2
"개인 키와 공개 키의 경로가 동일해야합니다." 그것은 그것과 아무 관련이 없습니다. 당신은 당신의 개인 옆에있는 공개 키를 상주 할 필요는 없습니다 ..
user3790897

5

필자의 경우 개인 키 파일 (.ppk)이 Putty 인증 에이전트 (예 : Pageant)에서 제거 되었기 때문입니다. 방금 Pageant에 다시 업데이트했으며 그 후 연결이 완벽하게 작동했습니다.

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