通过在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“完美地工作。 也许我不明白?
那么你如何通过终端上的'scp'对'192.168.1.1'进行身份验证? –
@martin我写了“scp -r〜/ dataIn [email protected]:〜/ dataOut” - > Enter - >写入密码 - >输入 –
OK,所以你真正的问题是如何传递密码,对吧?因为你显然需要这个。这是从第一时间起应该在你的问题中提供的信息。请编辑您的问题以明确您的要求。 –