JSchException délai d'attente: socket n'est pas établi

Je suis en train d'utiliser JSch pour se connecter à mon ordinateur via ssh, puis exécuter une commande.

Cependant, lorsque je lance le code, je n'ai jamais connecter à l'ordinateur. et le message d'erreur suivant:

I/System.out: com.jcraft.jsch.JSchException: timeout: socket is not established

Voici mon code:

protected void sshTesting(){
    String name = "";
    String userName = "kalenpw";
    String password = "hunter2";
    String ip = "192.168.0.4";
    int port = 22;
    String command = "cmus-remote -u";

    try{
        JSch jsch = new JSch();
        Session session = jsch.getSession(userName, ip, port);
        session.setPassword(password);
        session.setConfig("StrictHostKeyChecking", "no");


        System.out.println("Establishing connection");
        session.connect(10);

        Channel channel = session.openChannel("exec");
        ((ChannelExec)channel).setCommand(command);
        channel.setInputStream(null);
        channel.connect(10000);

//           name = session.getUserName();
//           System.out.println(session.getHost());


    }
    catch(Exception e){
        System.err.print(e);
        System.out.print(e);
    }        

}

C'est ma première fois en utilisant JSch donc je suis à peu près juste à la suite l'une de leurs exemples Exec.java. J'ai trouvé cette réponse JSch/SSHJ - Connexion au serveur SSH sur le bouton cliquez sur qui, malheureusement, mon code ressemble, c'est l'établissement d'une connexion dans un mode similaire mais sans aucun résultats. J'ai testé SSHing dans mon ordinateur normalement et il fonctionne très bien donc je ne crois pas que le problème est avec le serveur, mais avec mon code.

Ici est l'ensemble de la trace de la pile:

W/System.err: com.jcraft.jsch.JSchException: timeout: socket is not establishedcom.jcraft.jsch.JSchException: timeout: socket is not established
W/System.err:     at com.jcraft.jsch.Util.createSocket(Util.java:394)
W/System.err:     at com.jcraft.jsch.Session.connect(Session.java:215)
W/System.err:     at com.example.kalenpw.myfirstapp.RectangleClickActivity.sshTesting(RectangleClickActivity.java:97)
W/System.err:     at com.example.kalenpw.myfirstapp.RectangleClickActivity$1.onCheckedChanged(RectangleClickActivity.java:56)
W/System.err:     at android.widget.CompoundButton.setChecked(CompoundButton.java:165)
W/System.err:     at android.widget.Switch.setChecked(Switch.java:1151)
W/System.err:     at android.widget.Switch.toggle(Switch.java:1146)
W/System.err:     at android.widget.CompoundButton.performClick(CompoundButton.java:123)
W/System.err:     at android.view.View$PerformClick.run(View.java:22589)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7325)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

RectangleClickActivity.java est le fichier que je suis en train de tester SSH.

ligne 97: session.connect(10);

ligne 56: sshTesting();

Avez-vous regardé le trafic à l'aide de Wireshark pour voir si c'est encore d'essayer une connexion? Personne ici ne peux éventuellement aider sans plus d'informations autres que de suggérer qu'il y a un réseau ou d'un problème de firewall entre les deux systèmes.
oui, je peux vous connecter via un terminal. J'ai juste essayé de Wireshark, jamais utilisé avant, donc je ne suis pas sûr de la façon de l'analyser en détail, mais lorsque j'essaie de me connecter il y a plusieurs entrées avec mon ordinateur de destination donc je crois qu'il essaye de se connecter. Je ne suis pas sûr qu'un réseau ou un pare-feu est la question depuis que je suis sur le même réseau local, mais peut-être il est. Quoi d'autre puis-je vérifier?
Qui ligne dans votre code lève l'exception? Publiez aussi la trace de la pile complète.
c'est la ligne que j'appel session.connect(10) j'ai juste modifié tout cela dans ma question
J' fortement vous suggérons d'examiner le code pour com.jcraft.jsch.Util.createSocket qui a l'air assez fragile pour moi. Pour mettre en œuvre un délai d'attente, il ne le brancher dans un thread et si le thread n'a pas de fin par le délai d'attente, il déclare que la connexion a échoué. J'aimerais ajouter la source de l'EDI et de trace de ça dans votre débogueur pour voir ce qui se passe réellement. Il pourrait être un bug dans JSch. Bienvenue dans le monde de l'Open Source.... 🙂

OriginalL'auteur kalenpw | 2017-02-25