2016-08-30 16 views
1

를 사용하여 SCP에 암호를 전달하기 위해 나는 다음 명령을 실행해야합니다 제대로 우분투에서어떻게 자바 ssh를 JSch 및 jcabi-ssh를

scp -r ~/dataIn [email protected]:~/dataOut 

(16.04) 터미널이 명령의 일을. [email protected]은 localhost입니다.

Shell shell = new SSHByPassword("192.168.1.1", 22, "yatsuk", "passw"); 
String stdout = new Shell.Plain(shell).exec("scp -r ~/dataIn [email protected]:~/dataOut"); 
System.out.println(stdout); 

그리고 JSch하여이 코드 :

그래서 내가 jcabi 사용하여이 코드를 시도

JSch jsch = new JSch(); 
JSch.setConfig("StrictHostKeyChecking", "no"); 
Session session = jsch.getSession("yatsuk", 192.168.1.1, 22); 
session.setPassword("passw"); 
session.connect(); 

Channel channel = session.openChannel("exec"); 
((ChannelExec) channel).setCommand("scp -r ~/dataIn [email protected]:~/dataOut"); 
((ChannelExec) channel).setErrStream(System.err); 
channel.setOutputStream(System.out); 
channel.setInputStream(System.in); 
channel.connect(); 

while (!channel.isClosed()) { 
    Thread.sleep(1000); 
} 
channel.disconnect(); 
session.disconnect(); 

이 모두 나를 돌아 :

Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
lost connection 

간단한 명령처럼 "> 1 에코 1.txt "는 완벽하게 작동합니다. 아마도 내가 이해하지 못하는 것일 수 있습니까?

+0

그럼 어떻게 터미널에서'scp '로'192.168.1.1'을 인증합니까? –

+0

@martin "scp -r ~/dataIn [email protected] : ~/dataOut"-> Enter -> 암호 쓰기 -> –

+0

을 입력하십시오. 실제 질문은 패스워드를 어떻게 넘기는 것입니까? 당신은 분명히 그것을 필요로하기 때문에. 그것은 첫 번째 순간부터 질문에 있었어야하는 정보입니다. 질문 내용을 명확하게 편집하십시오. –

답변

0

문제는 scp~/.ssh에 암호를 찾고 거기를 찾을 수 있다는 것입니다 :


또 다른 방법은 expect 또는 sshpass 도구를 사용하고 있습니다. scp에게 다시 제공해야합니다. 다음과 같은 것 : How to pass password to scp?