Authorized_keys에 내 키가 있지만 여전히 거부됩니다.

Authorized_keys에 내 키가 있지만 여전히 거부됩니다.

SSH를 사용하여 M1 컴퓨터에서 M2 컴퓨터로 연결합니다(다른 컴퓨터의 동일한 사용자에게). 또한 사용자가 두 컴퓨터에서 동일한 키를 공유한다는 점도 언급해야 합니다. 비밀번호 인증을 사용하면 모든 것이 잘 작동합니다. 공개 키 인증에서는 그렇지 않습니다. ~/.ssh/authorized_keysM2에 승인된 RSA 키가 있는지 확인했지만 여전히 ssh는 비밀번호 인증으로 대체됩니다. 나는 다음을 얻습니다 ssh -vvv:

debug2: key: /home/joeuser/.ssh/id_rsa (0x7f42679e8200),
debug2: key: /home/joeuser/.ssh/id_dsa ((nil)),
debug2: key: /home/joeuser/.ssh/id_ecdsa ((nil)),
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/joeuser/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/joeuser/.ssh/id_dsa
debug3: no such identity: /home/joeuser/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/joeuser/.ssh/id_ecdsa
debug3: no such identity: /home/joeuser/.ssh/id_ecdsa: No such file or directory
debug2: we did not send a packet, disable method

내가 언급해야 할 것은~이다다른 컴퓨터의 공개 키 인증을 사용하여 연결할 수 있습니다(동일한 키가 아님).

이 경우 키 기반 인증이 실패하는 잠재적인 이유는 무엇입니까?

참고: 머신은 모두 SLES(SuSE Linux Enterprise Server) 11입니다.

답변1

ssh -vvv클라이언트에서 다음과 같이 디버그 모드에서 sshd와 페어링하여 올바른 작업을 수행했습니다 .

두 번째 서버 인스턴스: # /usr/sbin/sshd -p 1234 -dddd

연결할 전용 클라이언트: $ ssh -i .ssh/id_rsa-admuser admuser@server -p 1234 -vvvv

내 경우에는 중요한 정보가 클라이언트에만 인쇄되는 것으로 나타났습니다. 서버가 통과했어요

debug2: user_key_allowed: check options...
debug2: user_key_allowed: advance ...
debug2: key not found

클라이언트가 이것을 생각해내는 동안 :

debug1: Next authentication method: publickey
debug1: Offering public key: .ssh/id_rsa-admuser RSA SHA256:<censored> explicit agent
debug1: send_pubkey_test: no mutual signature algorithm

그래서 여기서 무슨 일이 일어나고 있었습니까?

서버가 너무 오래되어 도우미 알고리즘을 협상할 수 없었습니다. 열쇠도 있었어날짜가 있는, 그러나 일반적으로 괜찮습니다.

이제 기본적인 접근 방식은 무엇입니까?

  1. 다른 포트에서 전용 서버 시작
  2. 새 세션에서 클라이언트에서 연결
  3. 양측의 키 교환을 단계별로 비교하십시오.
  4. 새로 생성된 두 번째 키 쌍을 사용하여 결과 검증

이 특정 예에서는 더 이상 사용되지 않는 안전하지 않은 오래된 방법이라는 명확한 설명이 있었습니다. 즉, 여기에 설명되어 있습니다. https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html

이전 상자를 업데이트하려면 -o PubkeyAcceptedKeyTypes=+ssh-rsa클라이언트의 SSH 명령줄에 추가하여 연결할 수 있습니다.

답변2

기본사항을 확인하세요.

  1. id_rsa 및 id_rsa.pub는 M1과 M2 모두에 존재합니다.
  2. id_rsa는 M1과 M2 모두에 대해 권한 600(즉, 소유자만 읽기/쓰기 가능)을 갖습니다.
  3. authorized_keys 파일에 한 줄로 붙여넣은 키가 있습니다(줄바꿈 없음).
  4. Authorized_keys의 권한은 600입니다.
  5. 일반적으로 내 .ssh 폴더에 대한 권한은 600(기본값)입니다.
  6. 각 폴더/home의 권한을 .ssh까지 확인하세요.
  7. RSA를 사용하고 싶다는 것을 알고 있지만 DSA 키를 사용해 보고 작동하는지 확인하세요. 그렇다면 SSH 및 RSA 구성이 0으로 설정됩니다.

답변3

당신이 얻는 오류는

/home/joeuser/.ssh/id_dsa: No such file or directory

이 파일이 존재하는지, 추가한 공개 키에 해당하는 개인 키가 포함되어 있는지, 속하고 사용자 권한이 joeuser있는지 확인하세요.600

sudo chown joeuser /home/joeuser/.ssh/id_dsa
sudo chmod 600 /home/joeuser/.ssh/id_dsa

또한 다음과 같이 개인 키를 명시적으로 정의해야 합니다.

ssh -i ~/.ssh/id_rsa [email protected]

이것이 올바른 키인지 확실하지 않은 경우 새 RSA 키 쌍을 생성하는 것이 좋습니다.

ssh-keygen -b 4096

공개 키의 내용을 ~/.ssh/id_rsa.pub원격 서버의 Authorized_keys 파일에 추가합니다. 다른 서버에 로그인하는 데 필요한 기존 개인 키를 덮어쓰지 않도록 주의하세요!

관련 정보