Staram się zrobić coś z tym prostym przykładzie:Proste SSH połączyć z jsch
SSH, execute remote commands with Android
Chcę tylko zobaczyć, czy mogę połączyć się z mojego telefonu z systemem Android na serwerze Linux za pomocą protokołu SSH, ale to nie robi „t pracy ...
Tu jest mój główny kod:
package com.example.ssh;
import java.util.Properties;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try
{
JSch jsch = new JSch();
Session session = jsch.getSession("root","192.168.0.26", 22);
session.setPassword("xxxxx");
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
Co zrobiłem źle? Nie mam komunikatów o błędach i nie widzę żadnego połączenia SSH na moim Linux-ie. Dodałem biblioteki jsch i jzlib. Nie mam problemu z nawiązaniem połączenia z sesją kitową.
EDIT1: W rzeczywistości znalazłem błąd, który wyjaśnia, dlaczego nie działa, nawet jeśli nie wiem, jak rozwiązać problem. Błąd jest:
android.os.NetworkOnMainThreadException
więc wydaje się, że oznacza to, że aplikacja nie może przeprowadzić operację tworzenia sieci na jej głównego wątku ...
Dzięki ! Zamierzam wypróbować Twoje rozwiązanie. – Pozinux