2010-07-29 1 views
0
를 사용하여 암호없이 호스트에 SSH를

현재 다음과 같이 배쉬의 인스턴스를 호출하여 유닉스 상자에서 명령을 실행하는 자바 응용 프로그램을 사용하여 임 -방법 자바

proc = Runtime.getRuntime().exec("/bin/bash", null, wd); 

및 임은에서 명령을 실행을 다음의 PrintWriter에 의해 상자 -

PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true); 

을 이제 요구 사항으로 내가 다른 호스트에 ssh를 호스트의 배쉬의 인스턴스를 호출하고 몇 가지 명령을 실행해야합니다. 암호를 입력하지 않고도이 작업을 수행 할 수 있다면 좋을 것입니다. 그렇지 않은 경우 적절한시기에 '비밀번호'를 입력하도록 신청서를 작성하려면 어떻게해야합니까? shh 명령의 출력을 읽고이를 기반으로 암호를 쓰는 것은 매력적이지 않습니다.

위의 포인터는 큰 도움이 될 것입니다.

감사 p1nG

답변

5

를 사용하여 런타임 exec'ing SSH를 프로그램을 대신 자바로 작성된 SSH 라이브러리.

+0

JSch를 사용했습니다. 최소한으로 문서화되었지만, 그것은 나를 위해 일했습니다. 감사합니다. . – ping

1

SSH-2 for java을 적극적으로 유지 관리 할 수 ​​있습니다.

또는 음부/개인 키를 password-less authentication으로 설정하고 개인 키를 java 프로그램을 실행하는 사용자의 ~/.ssh 폴더에 저장하십시오.

-2

암호를 어떻게 피할 지 상상할 수 없습니다. 암호를 입력하지 않고 시스템에 로그인 할 수 있다면 암호를 제공하는 것이 불편할 수 있다는 것을 알게되면 오히려 보안의 가치를 파괴하게됩니다. 경비원 : "이 건물에 접근 할 수있는 ID가 있습니까?" 방문객 : "예. 장교.하지만 지갑에서 꺼내는 것은 너무 어렵습니다." 가드 : "오, 좋아, 그럼, 앞으로 가서."

exec'ing보다는 소켓 연결을 설정하고 메시지를 깨끗이 전달할 수 있습니다. 또는 다른 사람들이 지적한 것처럼, 불만을 토로하는 라이브러리를 사용하십시오.

+1

OP는 대화 형 암호 입력 대신 응용 프로그램이 암호를 제공하게하려고했습니다. 또한 SSH는 mdma가 지적한 것처럼 암호가없는 인증을 제공합니다. –

+0

@Vinodh : OP가 의미하는 바에 대해서는 논쟁을하고 싶지 않습니다. 그는 "그렇지 않다면 어떻게 응용 프로그램을 적절한 시간에 암호를 입력하게 할 것인가"라고 말하면서, 응용 프로그램이 사용자 상호 작용이 아니라 암호를 제공한다는 의미 인 것처럼 들립니다. 그게 그가 의미하는 바가 아니라면, 알았어. 다시 암호가없는 인증, 다시, 우리는 여기서 정의를 논할 것입니다. 이 기사에서는 사용자에게 묻지 않고 자격 증명을 제공하는 방법에 대해 설명합니다. 자격 증명은 계속 제출해야합니다. 나는 "암호가없는 인증"이라고 부르지 않을 것입니다. – Jay

+0

ssh는 공용 - 개인 키 인증을 지원하며 암호는 필요하지 않습니다. –