2012-06-06 25 views
5

Ich versuche, ein Java-Programm zu schreiben, das über ssh verbinden und einige Sachen auf einem Server bei der Arbeit (Redhat) tun wird Linux). Meine Box ist Windows. Ich lese über sshj und ich versuche, das Beispiel zur Arbeit zu bringen. Ich habe die meisten Abhängigkeiten durchgearbeitet und jetzt habe ich einen Fehler bei öffentlichen/privaten Schlüsseln und leider weiß ich auch nicht viel (ja, es ist ein perfekter Sturm von Neuling!). Hier ist der Fehler:mit sshj Beispiel ('exec') kämpfen: `ssh-rsa` Host-Schlüssel mit Fingerabdruck nicht überprüfen

Exception in thread "main" net.schmizz.sshj.transport.TransportException: [HOST_KEY_NOT_VERIFIABLE] kann nicht verifizieren ssh-rsa Host-Schlüssel mit Fingerabdruck 5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d für myserver auf Port 22

Hier ist der Code:

import net.schmizz.sshj.SSHClient; 
import net.schmizz.sshj.common.IOUtils; 
import net.schmizz.sshj.connection.channel.direct.Session; 
import net.schmizz.sshj.connection.channel.direct.Session.Command; 

import java.io.IOException; 
import java.util.concurrent.TimeUnit; 

/** This examples demonstrates how a remote command can be executed. */ 
public class sshBuddy { 

    public static void main(String... args) 
      throws IOException { 
     final SSHClient ssh = new SSHClient(); 
     ssh.loadKnownHosts(); 
     //ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d"); 

     ssh.connect("myserver"); 
     try { 
      ssh.authPublickey(System.getProperty("myusername")); 
      final Session session = ssh.startSession(); 
      try { 
       final Command cmd = session.exec("ping -c 1 google.com"); 
       System.out.println(IOUtils.readFully(cmd.getInputStream()).toString()); 
       cmd.join(5, TimeUnit.SECONDS); 
       System.out.println("\n** exit status: " + cmd.getExitStatus()); 
      } finally { 
       session.close(); 
      } 
     } finally { 
      ssh.disconnect(); 
     } 
    } 

} 

Jede Hilfe wäre willkommen, danke!

Antwort

1

versuchen, diese

public class sshBuddy { 

    public static void main(String... args) 
      throws IOException { 
     final SSHClient ssh = new SSHClient(); 
     //ssh.loadKnownHosts(); 
     ssh.addHostKeyVerifier("5f:d6:94:00:9e:ec:7e:34:6d:d0:d3:76:df:5e:dd:3d"); 

     ssh.connect("myserver"); 
     try { 
      ssh.authPublickey(System.getProperty("myusername")); 
      final Session session = ssh.startSession(); 
      try { 
       final Command cmd = session.exec("ping -c 1 google.com"); 
       System.out.println(IOUtils.readFully(cmd.getInputStream()).toString()); 
       cmd.join(5, TimeUnit.SECONDS); 
       System.out.println("\n** exit status: " + cmd.getExitStatus()); 
      } finally { 
       session.close(); 
      } 
     } finally { 
      ssh.disconnect(); 
     } 
    } 
} 

Kommentar- der addHostKeyVerifier und Kommentar loadKnownHosts. Es sollte funktionieren.

8

nur versuchen, diese

ssh.addHostKeyVerifier(new PromiscuousVerifier()); 

diese

+2

Dies ist keine Lösung funktionieren sollte. Sie sagen im Grunde, die Überprüfung des Hostschlüssels als solche zu deaktivieren. – Matiss