我正在尝试使用JSch通过ssh连接到我的计算机,然后运行命令。JSchException超时:套接字未建立
但是,当我运行代码时,我从未连接到计算机。和以下错误:
I/System.out: com.jcraft.jsch.JSchException: timeout: socket is not established
这里是我的相关代码:
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);
}
}
这是使用JSch我的第一次,所以我非常简单,只是下面的它们的实例Exec.java之一。我发现这个答案JSch/SSHJ - Connecting to SSH server on button click,不幸的是我的代码看起来像是以类似的方式建立连接,但没有结果。我已经正常测试SSH到我的电脑,它工作正常,所以我不认为这个问题是与服务器,但与我的代码。
这里是整个堆栈跟踪:
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
是我测试SSH的文件。
线97:session.connect(10);
线56:sshTesting();
你有使用Wireshark的,看看它甚至尝试连接看了看流量?如果没有更多的信息,除了表明您的两个系统之间存在网络或防火墙问题之外,没有人可以提供帮助。 –
@JimGarrison是的,我可以通过终端连接。我刚刚尝试过Wireshark,之前从未使用它,所以我不知道如何详细分析它,但是当我尝试连接时,我的计算机有几个条目作为目标,因此我相信它正在尝试连接。我不确定网络或防火墙是否属于这个问题,因为我在同一个本地网络上,但也许有。我还能检查什么来确定? – kalenpw
代码中的哪一行会引发异常?同时发布完整的堆栈跟踪。 –