【发布时间】:2018-05-18 02:04:49
【问题描述】:
你好,我想写一个程序,通过ssh协议将手机连接到路由器,并使用jsch库。
但连接时会出现此错误。
05-06 05:53:58.754 3985-4006/com.example.amir133.tel W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe3031c00, error=EGL_SUCCESS
05-06 05:54:08.692 3985-4046/com.example.amir133.tel W/System.err: com.jcraft.jsch.JSchException: timeout: socket is not established
at com.jcraft.jsch.Util.createSocket(Util.java:394)
at com.jcraft.jsch.Session.connect(Session.java:215)
at com.jcraft.jsch.Session.connect(Session.java:183)
at com.example.amir133.tel.SSHManager.execute(SSHManager.java:89)
at com.example.amir133.tel.MainActivity$1$1.doInBackground(MainActivity.java:52)
at com.example.amir133.tel.MainActivity$1$1.doInBackground(MainActivity.java:47)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
我检查了与this 和this 相同的问题,但都没有解决我的问题。
我添加到manifist Internet访问。
通过putty,我可以连接到这个路由器,所以路由器没有问题。
有人可以帮忙吗?
主类:
connect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Integer, Void, Void>(){
@Override
protected Void doInBackground(Integer... params) {
try {
SSHManager ssh=new SSHManager("amir","123","192.168.66.120");
ssh.execute();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(1);
}
});
SSHManager 类:
public class SSHManager {
private JSch jsch;
private String hostname = null;
private String username;
private String password;
private Session session;
private ChannelExec channel;
private int connectioPort = 22;
private void SSHManager (String userName,
String password, String connectionIP) {
this.username = userName;
this.password = password;
this.hostname = connectionIP;
}
public String execute() {
try {
jsch = new JSch();
session = jsch.getSession(username, hostname, 22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.setTimeout(10000);
session.connect();
channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("en\n123\nconf t\nexit");
channel.connect();
channel.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
【问题讨论】:
-
我测试了但我的问题没有解决
-
你能通过手机连接任何SSH客户端吗?
-
是的,我用另一个软连接