SSH 클라이언트는 SSH 서버에 공개 키를 제공하지 않습니다.

SSH 클라이언트는 SSH 서버에 공개 키를 제공하지 않습니다.

Linux 서버에 루트가 아닌 두 명의 사용자가 있습니다. 첫 번째 사용자의 특정 SSH 서버에 대한 SSH 연결(키 기반 인증)을 설정하면 성공합니다.

/* debug messages removed for brevity */
debug1: Next authentication method: publickey
debug1: Offering public key: .ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '.ssh/id_rsa': 
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8

이제 두 번째 사용자에서 지정된 개인 키 파일을 사용하는데 -i .ssh/SD키 기반 인증이 성공하지 못합니다. 이 시점까지 모든 SSH 클라이언트 디버그 메시지는 정확히 동일합니다.

/* debug messages removed for brevity */
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/SD
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '.ssh/SD': 
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

두 번째 경우 SSH 클라이언트가 공개 키를 제공하지 않는 이유는 무엇입니까? 이는 키 기반 인증을 위한 필수 단계죠?

답변1

두 가지를 확인하고 싶습니다.

  1. 다른 SSH 키를 사용하고 있는 것 같으므로 권한이 올바른지 확인하세요. .ssh 폴더는 0700, rsa 개인 키는 0600, 공개 키는 0644여야 합니다. ls -l ~/.ssh보기 권한을 위해 .

  2. 공개 키가 두 번째 서버로 전송되었는지 확인하세요. ssh-copy-id ~/.ssh/SD.pub를 사용하여 공개 키를 두 번째 서버에 복사 할 수 있습니다 . 일단 실행되면 서버에 로그인하여(루트 또는 비밀번호로) 해당 파일이 존재하는지 확인할 수 있으며 cat ~/.ssh/authorized_keys로컬 시스템에 정확한 출력이 있어야 합니다. cat ~/.ssh/SD.pub이전에 추가한 경우 추가 키가 있을 수 있습니다.

이 두 가지가 모두 좋아 보이지만 여전히 들어갈 수 없는 경우 /var/log/secure에서 서버 로그를 확인하거나 포그라운드에서 두 번째 SSH 서버를 실행하여 무슨 일이 일어나고 있는지 확인할 수 있습니다. 원격 서버에서 실행

sudo $(which sshd) -p 6666 -D -d

그런 다음 시스템에서 다음 명령을 사용하여 새 SSH 데몬에 로그인해 보십시오.

ssh -p 6666 -i ~/.ssh/SD <SERVER>

서버 터미널에 인쇄된 로그 정보를 볼 수 있으며 여기에는 로그인이 실패한 이유에 대한 자세한 정보가 포함될 수 있습니다.

두 번째 sshd 데몬에 대한 설명입니다. 보안상의 이유로 권한은 일반적으로 0755이지만 sudo가 필요합니다. 또한 sshd 바이너리에 대한 전체 경로를 제공해야 합니다. 이것이 $(which sshd)명령에 포함된 이유입니다. -p 6666포트를 설정합니다(저는 임의의 포트를 선택했습니다). 디버깅이 활성화된 -D상태에서 포그라운드에서 실행됩니다 -d.

답변2

두 번째 경우 SSH 클라이언트가 공개 키를 제공하지 않는 이유는 무엇입니까?

공개 키가 존재하는 경우 클라이언트가 제공합니다(즉, 파일이 존재하고 개인 키와 동일한 폴더에 있으며 동일한 이름 + ".pub"을 가짐).

이는 키 기반 인증을 위한 필수 단계죠?

아니요. 공개 키 제공은 선택 사항입니다. 클라이언트가 개인 키를 소유하고 있음을 증명하는 것은 필수입니다.
더 많은 설명은 여기에서 찾을 수 있습니다: https://security.stackexchange.com/a/152638

이 두 가지 상황을 설명하려면 다음을 수행하십시오.

  1. 공개 키를 제공한 후 클라이언트가 개인 키를 소유하고 있음을 증명하세요.
debug1: Authentications that can continue: publickey,password
debug1: Offering public key: RSA SHA256:3btAL+lsfo8D3Z8PVWLG04j8BqShS2ImfxqwMFPS8BM '.ssh/id_rsa'
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:3btAL+lsfo8D3Z8PVWLG04j8BqShS2ImfxqwMFPS8BM
debug3: sign_and_send_pubkey: RSA SHA256:3btAL+lsfo8D3Z8PVWLG04j8BqShS2ImfxqwMFPS8BM
debug3: send packet: type 50
debug3: receive packet: type 52
debug1: Authentication succeeded (publickey).
  1. 클라이언트가 개인 키를 가지고 있다는 것만 증명합니다.
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: '.ssh/id_rsa'
debug3: sign_and_send_pubkey: RSA SHA256:3btAL+lsfo8D3Z8PVWLG04j8BqShS2ImfxqwMFPS8BM
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 52
debug1: Authentication succeeded (publickey).

.ssh/SD.pub이름이 지정된 공개 키가 존재하고 개인 키와 관련이 없는 경우 .ssh/SD(예: 이전에 생성된 키로 인해) 연결이 실패합니다. OP에서 제공한 로그에 따르면 여기서는 그렇지 않지만 이 질문을 할 때 겪었던 문제가 바로 이것이었습니다. 이 경우 클라이언트의 로그는 다음과 같습니다(인증이 실패한 이유를 명확하게 명시하지 않음).

debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:p5eJ+CJ1aRR9xeEcQUDCkbnQ3VUxa8cxjlWUhsYfla4 '.ssh/id_rsa'
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password

관련 정보