由于我们的项目要用到ssh通信,所以需要在程序中调用ssh命令.
我采用的方式如下:
try {
String command = "ssh -2 -N -f -L 5000:122.204.142.54:8889 administrator@122.204.142.54 - i c:\axrsa" ;
// 注意:c:\axrsa为一个秘钥文件
Runtime.getRuntime().exec(command);
}
catch (IOException e)
{
e.printStackTrace();
}
可是出现的问题是,老是连接不上去,但如果我把command行命令在运行里面手动输入,却可以成功.但是却关闭不了dos窗口.须强行关闭.
这个问题困扰了我好几天了,请大家帮我看看啊.我初步怀疑是不是exec返回的子进程的输出缓冲区太小的原因.因为如果连接成功的话,ssh会返回很多信息.
[b]问题补充:[/b]
谢谢layer555 的热心回答.
但是我还是没有解决问题,我测试如下代码:
[img]/upload/attachment/108471/9a175e66-162b-395b-8288-56b7e627a5e0.jpg[/img]
然后一运行,发现程序结束不了.经调试发现,执行到如下语句就出问题了.
while ((line = error.readLine()) != null) {
errorMessage.append(line);
}
请问这是为什么? 谢谢大家