Java Jsch ChannelExec:命令发出后如何向服务器传递密码?

Java Jsch ChannelExec:命令发出后如何向服务器传递密码?,java,ssh,jsch,Java,Ssh,Jsch,我想使用java应用程序Jsch和ChannelExec中的“scp”命令。命令可以,但如何传递密码 直接在服务器上,它将如下所示: $ scp user@server:/myPath/* . $ user@server's password: (informations on files copied) 命令和密码分别位于两行 要在java中重新创建,我执行了以下操作: ChannelExec channelExec = (ChannelExec) session.openChannel("

我想使用java应用程序Jsch和ChannelExec中的“scp”命令。命令可以,但如何传递密码

直接在服务器上,它将如下所示:

$ scp user@server:/myPath/* .
$ user@server's password:
(informations on files copied)
命令和密码分别位于两行

要在java中重新创建,我执行了以下操作:

ChannelExec channelExec = (ChannelExec) session.openChannel("exec"); //$NON-NLS-1$
channelExec.setCommand(scpCommand);
channelExec.connect();
try (OutputStream outputStream = channelExec.getOutputStream()) {
    pause(5000);
    outputStream.write((password + "\n").getBytes()); //$NON-NLS-1$
    outputStream.flush();
}

(read result and terminate session)
但是你可以猜到它不起作用

你有解决这个问题的线索吗? 我应该在命令中传递密码,并用特殊字符分隔吗?(“\n”也许我不知道) 还是有其他解决办法


谢谢你的时间

连接之前,请使用下面的代码行

channelExec.setPty(true);
有关更多详细信息,请参阅以下文档。

解释:
scp
命令只能从终端读取密码。调用
setPty(true)
启用Paramiko中的终端仿真。一般来说,这会给你带来很多不好的副作用,应该避免。使用
scp
可能没问题+1.