几个小时以来,我一直试图找出这个问题,但我似乎无法弄清楚。我正在尝试使用 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、用户名和密码,所以我知道凭据是正确的。我已经用谷歌搜索了这个问题,任何输入都会对我有很大帮助!