我已经试了几个小时,但似乎无法解决这个问题。我正在尝试使用JSch从Android手机SSH到Linux计算机。命令总是正常工作的,但通道的输出通常为空。有时它会显示输出,但大多数情况下不会。以下是我在网上找到的代码。
String userName = "user";
String password = "test123";
String connectionIP = "192.168.1.13";
JSch jsch = new JSch();
Session session;
session = jsch.getSession(userName, connectionIP, 22);
session.setPassword(password);
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
// SSH Channel
ChannelExec channelssh = (ChannelExec) session.openChannel("exec");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
channelssh.setOutputStream(baos);
// Execute command
channelssh.setCommand("ls");
channelssh.connect();
channelssh.disconnect();
RESULT = baos.toString();
RESULT通常为空。如果我将命令更改为mkdir或类似的命令,则文件将显示在Linux计算机上,这表明命令部分正常工作。问题似乎在ByteArrayOutputStream中。我还通过终端在另一台计算机上测试了connectionip、用户名和密码,因此我知道凭据是正确的。我已经通过谷歌搜索了这个问题,任何输入都会对我有很大帮助!
ls
是否会显示任何内容?它可能是一个空的主目录测试帐户吗? - Kjell Andreassen