2009-05-07 3 views
1

유닉스 컴퓨터에 누군가가 연결하는 데 사용할 수있는 SSH 사용자 이름과 암호가 들어있는 텍스트 파일이 있습니다.유닉스에서 Java의 SSH 자격 증명 확인

Java를 사용하여 사용자 이름과 비밀번호가 유효하다는 것을 어떻게 확인할 수 있습니까?

Runtime.exec()을 사용하여 동일한 시스템에 SSH 연결을 시도합니까?

사용자 인/etc/passwd에 대해 grep 할 수 있습니다. 그러나 암호는 음영 처리됩니다.

의견을 보내 주시면 감사하겠습니다.

답변

0

루트 액세스 권한이 있다면 /etc/shadow을 읽을 수 있습니다. 나는 이것이 "올바른"방법이라고 말하고 싶다. 그 외에는

, SSH를 호출하여 friggly 방법은 내가 생각 확인을해야하지만, 나는 파일이 생성 된 경우, 말하자면, 그 다음 어떤 임의의 임시 file--을 만들어 명령을 실행하는 SSH를 사용하십시오 (또는 수행 된 명령) 사용자 이름/암호가 맞다고 가정합니다. 칙칙한 소리는 들리지만, 응급 상황에서 일할 수는 있습니다.

오 물론, frig에는 실제로 그 사용자로 로그인 한 부작용이 있습니다. 그것은 바람직하지 않을 수도 있습니다 ...!

1

설명 된 메커니즘이 실제로 ssh에 종속적이지 않으므로 "Java에서 UNIX 자격 증명 검증"으로 문제가 확장 될 수 있습니다.

su -u username -c echo

그냥 답을 알 수있는 종료 상태를 확인하십시오

다음은 네트워크 스택의 오버 헤드를 사용하지 않고 (예를 들어, ProcessBuilder와) 더 나은 기대와 같은 대안으로 내 기회입니다. (보너스 포인트 : su는 모든 UNIX 운영 체제에 존재하며 PATH에있을 수도 있으며 LDAP와 같은 다른 외부 인증 시스템에도 유효합니다).

0

/etc/passwd 및/etc/shadow보다 UNIX 인증이 더 많음을 기억하십시오. 예를 들어 Kerberos, LDAP, NIS 또는 다른 수의 소스에 대해 인증 할 수 있습니다. 이런 이유로 Java 용 PAM 래퍼를 살펴 보는 것이 좋습니다. 빠른 google은 http://jpam.sourceforge.net/으로 바뀌었지만 경험이 없습니다. 물론 SSHD

는 당신이 일을 변경 그 후 정확히 SSHD의 규칙을 따르십시오 단지 등 특정 사용자를 허용 전혀 PAM을 사용하거나하지 않도록 구성 할 수 수 있지만 인증이 더 PAM 같은 소리 무엇 필요.