2011-11-17 2 views
1

계단식 SSH가 필요한 프로그램이 있습니다. 즉, 서버에 ssh를 적용한 다음 동일한 연결 ssh B 서버를 사용하고 있습니다. 서버 A는 브리지 역할을합니다. 첫 번째 서버를 ssh하는 데 사용되는 셸 인스턴스가 있습니다.비대화 형 암호 SSH in Java

ssh user @ ipAddress를 수행 할 때 암호를 묻습니다. ssh user @ ipAddress \ npassword를 시도했습니다. 그것은 작동하지 않는 것 같습니다.

ssh-agent와 같은 외부 도구를 사용할 수 없거나 예상 할 수 없습니다. 서버 A를 제어 할 권한이 없습니다.

암호를 입력하거나 암호를 입력 할 수있는 방법이 있습니까?

감사합니다.

답변

3

당신은 클라이언트

ssh-keygen 

에 RSA 키를 생성하고 암호없이 서버에 연결할 수 있도록 서버에 authorized_key 폴더에 권한이 부여 된 키를 공개 키를 놓아야합니다.

단계별 가이드는 here입니다.

편집 : 서버에 액세스 할 수없는 경우 this question에 decrived로 는, 자바에 대한 SSH 라이브러리를 사용합니다.

+0

내가 어떤 인증서를 설치할 수없는 서버 A. 제어 할 수 없습니다. 내가 할 수있는 유일한 방법은 ssh를 사용하는 것입니다. – Mo3z

+0

내 답변을 업데이트했습니다.이 스레드의 코드 조각을 확인하면 답변을 찾을 수 있습니다. – lc2817

+0

Thanks lc2817. 내 문제는 서버 A에 연결이 아닙니다. SSH 서버 A를 사용할 수 있습니다. 귀하의 대답은 저에게 해결책을 제공합니다. 동일한 연결을 사용하여 서버 A에서 서버 B로 SSH가 필요합니다. 고맙습니다! – Mo3z

1

어느 쪽이든 당신은 설치 password-less login 아니면 그냥 설명 here 같은 암호를 공급할 수 있습니다 : 사용할 수 없기 때문에

ssh -t -t <machine> <<EO_MY_INPUT 
<password> 
date # (or whichever is the command to get date/time) 
exit 
EO_MY_INPUT 
+0

ssh는 stdin에서 암호를 허용하지 않습니다. 적절한 매개 변수를 사용하여 @ 글렌 잭맨 –

+0

것입니다. 소식이 업데이트되었습니다. – Kashyap

0

기대 또는 ssh-Keygen은

다음 보석은 스크립트 A를 사용할 수 있습니다 암호 SSH 세션

http://www.debian-administration.org/articles/587

#!/bin/bash 
# Copyright (C) 2008 John S. Skogtvedt <jss at bzz.no> 
# Licence: GNU GPL v3 or later at your option 

if [ -n "$SSH_ASKPASS_FD" ] 
then 
     read password <&$SSH_ASKPASS_FD 
     echo "$password" 
     exit 0 
elif [ $# -lt 1 ] 
then 
     echo "Usage: echo password | $0 <ssh command line>" >&2 
     exit 1 
fi 

export SSH_ASKPASS=$0 
export SSH_ASKPASS_FD=4 
[ "$DISPLAY" ] || export DISPLAY=dummy:0 
read password 

exec 3<&0 
# write password 100 times to make repeated ssh connections work 
for x in $(seq 100) 
do 
    echo "$password" 
done | exec setsid "[email protected]" 4<&0 0<&3 
,

저장 위 asksshpass.sh로 할 수 chmod +x

echo "yourpassword" | ./sshaskpass.sh ssh [email protected] date 
관련 문제