我正在使用JSCH API从Java调用Shell命令。我试图像这样调用sftp命令:

Channel channel = (ChannelShell)getSession().openChannel("shell");
channel.connect();
PrintStream out = new PrintStream(channel.getOutputStream());
out.println("#!/bin/bash");
out.println("sftp akumar@sindh");
out.flush();


在Java控制台上,我看到它正在连接到此sindh服务器,然后要求输入密码。

Connecting to sindh...
akuamr@sindh's password:


我如何提供密码。我试过了

out.println("sftp akumar@sindh");
out.println("password123")


但这无法解决。提前致谢。

最佳答案

在连接之前,您需要在会话中设置密码:

    JSch jsch=new JSch();
    Session session = jsch.getSession("akumar", "sindh");
    session.setPort(22);
    session.setPassword("password123");
    session.connect();
    ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
    channel.connect();


然后,您可以使用该通道执行sftp命令。

09-07 19:39
查看更多