2013-03-12 8 views
1

아파치 미나 sshd를 사용하여 ssh 서버를 설정하려고합니다. 공개 키 인증을 사용하고 싶습니다. 기본적으로 구현 방법을 알고 싶습니다.아파치 sshd 공개 키 인증

package org.apache.sshd.server; 
import java.security.PublicKey; 
import org.apache.sshd.server.session.ServerSession; 

public interface PublickeyAuthenticator { 

boolean authenticate(String username, PublicKey key, ServerSession session); 

} 

전달 된 내용이 다른 공개 키인 것을 확인했습니다. 그래서 당신은 param에 주어진 공개 키와 서버가 가지고있는 공개 키를 비교해야한다고 가정합니다. 하지만 어떻게해야할지 모르겠다.

내가 발견 한 한 가지는 this 구현입니다. 이것은 공개 키의 모듈러스를 자신과 비교하는 것처럼 보이기 때문에 무의미한 것처럼 보입니다. 이 구현에 버그가 있고 각 공개 키의 모듈 수를 비교해야한다고 가정 할 때 인증에 충분합니까? 즉 모듈 수는 동의합니까? 분명히이 기능에 공개적으로 사용 가능한 공개 키를 제공했다면 인증을받을 수 있습니까?

답변

7

org.apache.sshd.server.auth.UserAuthPublicKey#auth의 출처에서 대답을 찾은 것 같습니다. 이 클래스는 키를 사용하여 실제 인증을 수행합니다. 나는 나를 혼란스럽게 생각하는 것은 방법의 이름이다 - authenticate(). 다음과 같이 정말 무슨 일이 있습니다 :

  • 서버는 당신이 authenticate()가에 어떻게해야하는

  • 공개 키는 PublickeyAuthenticator#authenticate

  • 전체에 전달되는 클라이언트의 공개 키를 요청합니다 허용 할 공개 키인지 확인하십시오.

  • 이 true를 반환하면 UserAuthPublicKey#auth은 메시지가 있는지 확인합니다. 비공개 키로 서명했다. 인증서가있는 경우 인증이 확인되었습니다.

+0

도움 주셔서 감사합니다. –

+0

유용한 콘텐츠 감사합니다. – btiernay