我正在使用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命令。