从Java运行unix命令 - Auth失败

时间:2014-06-17 11:20:28

标签: java unix ssh

我正在尝试使用此代码从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服务器上有一个密钥..我需要在我的代码中的某处添加它才能使连接成功吗?

1 个答案:

答案 0 :(得分:0)

您似乎使用公钥连接而不是使用密码。

为此,我认为您需要配置SSHExec以了解密钥文件的位置。

我不是一个java人,但我认为你需要这样的东西:

SSHExec.setOption("keyfile", "/home/user/.ssh/id_dsa.pub");

您的密钥文件会有所不同。