我正在尝试使用此代码从java运行unix命令:
// Initialize a ConnBean object, parameter list is ip, username, password
ConnBean cb = new ConnBean("servername", "username","");
// Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
SSHExec ssh = SSHExec.getInstance(cb);
// Connect to server
Boolean isConnected = ssh.connect();
String[] commands = new String[]{"sudo echo 'Hello command!.' > ChenTest.txt"};
CustomTask sampleTask = new ExecCommand(commands);
try {
Result result = ssh.exec(sampleTask);
} catch (TaskExecFailException e) {
System.out.println(e);
}
catch (Exception e) {
System.out.println(e);
}
当我调试我的应用程序时,我得到"验证失败"。
我知道我的服务器和用户名是正确的,但不确定为什么我无法连接。 我在这个unix服务器上有一个密钥..我需要在我的代码中的某处添加它才能使连接成功吗?
答案 0 :(得分:0)
您似乎使用公钥连接而不是使用密码。
为此,我认为您需要配置SSHExec以了解密钥文件的位置。
我不是一个java人,但我认为你需要这样的东西:
SSHExec.setOption("keyfile", "/home/user/.ssh/id_dsa.pub");
您的密钥文件会有所不同。