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();
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 questionJ' 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
Vous devez vous connecter pour publier un commentaire.
La question a fini par être j'étais réglage de la config à
session.setConfig("StrictHostKeyChecking", "no");
, mais pour une raison quelconque vous avez besoin de créer un fichier config et définir la StrictHostKeyChecking puis ajouter que la configuration de la session au lieu de juste mettre directement.Le code de travail ressemble à ceci:
OriginalL'auteur kalenpw