2016-08-30 32 views
1

通過在SCP我需要執行下面的命令:如何在密碼使用Java SSH JSch和jcabi-SSH

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

在Ubuntu(16.04)端子此命令正確工作。 [email protected]是localhost。

所以我嘗試此代碼使用jcabi:

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:

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

OK,所以你真正的問題是如何傳遞密碼,對吧?因爲你顯然需要這個。這是從第一時間起應該在你的問題中提供的信息。請編輯您的問題以明確您的要求。 –

回答