2013-09-25 6 views
0

У меня возникла проблема с попыткой проверить подключение при использовании библиотеки Ganymed в java, 2 недели назад она работала нормально, без проблем, но теперь я получаю следующее сообщение об ошибке :Ошибка при попытке выполнить команду

The execute request failed. 

Что связано с методом «execCommand()» Ganymed. Когда я использую WinSCP для подключения, все работает, но попытка подключения с помощью java дает мне ошибку. Я также думаю, что, возможно, брандмауэры могут быть причиной, просто мысль.

код, я использую, чтобы выполнить команду хвост состоит в следующем:

 import java.io.BufferedReader; 
     import java.io.IOException; 
     import java.io.InputStream; 
     import java.io.InputStreamReader; 
     import java.util.HashMap; 
     import java.util.Map; 
     import ch.ethz.ssh2.Connection; 
     import ch.ethz.ssh2.Session; 
     import ch.ethz.ssh2.StreamGobbler; 


    public class SSHTesting { 


public static void main(String[] args) { 


    try{ Connection conn = new Connection("eappdev101.momentum.co.za"); 

    conn.connect(); 

     boolean isAuthenticated = conn.authenticateWithPassword("username", "password"); 

     if (isAuthenticated == false) { 
      System.out.println("Credentials are wrong."); 
     } 

     Session sess = conn.openSession(); 

     sess.execCommand("tail -f /logs/SystemOut.log"); 
     InputStream stdout = new StreamGobbler(sess.getStdout()); 
     BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); 

     sess.close(); 
     conn.close(); 
     System.out.println("Done"); 
} 

catch(Exception ie){ 
    System.out.println(ie.getMessage()); 
} 



} 

    } 

Любое будка света высоко ценится. Заранее спасибо.

+0

код выглядит хорошо, так что это может быть из-за проверки подлинности сервера SSH конфигурации. –

ответ

0

для меня это отлично работает с ключом, и я предполагаю, что вы должны использовать ключ по соображениям безопасности

проверки ниже кода

private void init() throws IOException{ 
     char privateKeyChar[] = sshPrivateKey.toCharArray(); 

     conn = new Connection(ftpHostname,22); 
     conn.connect(); 

     boolean isAuthenticated = conn.authenticateWithPublicKey(sshUsername, privateKeyChar, null); 
     if (isAuthenticated == false) 
      throw new IOException("Authentication failed."); 

     session = conn.openSession();  
    } 

    public String excuteCMD(String cmd) throws IOException 
    { 
     session = conn.openSession(); 
     session.execCommand(cmd); 
     InputStream stdout = new StreamGobbler(session.getStdout()); 
     BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); 

     while (true) 
     { 

      String line = br.readLine(); 
      if (line == null) 
       break; 
      else 
       output+=line; 
     } 

     return output; 
    } 
+0

Привет, Саддам, спасибо за быстрый ответ, если я могу спросить, sshPrivateKey все еще является passowrd, который я использую для входа в систему или его предполагается сгенерировать с помощью Putty или? Спасибо. –

+0

Вы создаете его с помощью ssh-keygen и помещаете открытый ключ под авторизованные_иблоки в машинах Linux/Unix, см. Ниже пример http://sshmenu.sourceforge.net/articles/key-setup.html –

+0

Спасибо за ссылку Саддам, Я расскажу вам, как я прогрессирую, в настоящее время проверяя ссылку, которую вы предложили. –

Смежные вопросы