Что именно вы подразумеваете под "telnet в мое приложение, где они могут вводить команды и т. Д."?
Поскольку и для telnet, и для ssh требуется, чтобы какое-либо приложение запускалось на удаленной машине (чаще всего это экземпляр командной оболочки), они действительно предоставляют только транспортный механизм для команд. В частности, Telnet может (и был) злоупотреблен посылать общие текстовые команды по TCP-соединению. Вы можете просматривать веб-страницы с помощью команды telnet www.target-domain.com 80
и вручную вводить все данные протокола HTTP, но я бы не рекомендовал это делать. ssh точно такой же, хотя он добавляет безопасность ssl / tls к каналу.
Поэтому, я думаю, вы хотите что-то вроде этого:
import java.io.*;
import java.net.*;
public class telnettest {
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
//Open a listening socket on port 8022 and wait for a connection
echoSocket = new ServerSocket(8022).accept();
System.out.println("connection established");
//Get input and output streams
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection");
System.exit(1);
}
//Read lines from the input stream (corresponding to user commands)
String userInput;
while ((userInput = in.readLine()) != null) {
//For each line entered, just output it to both remote and local terminal
out.println("echo: " + userInput);
System.out.println("echo: " + userInput);
}
//Clean up connections.
out.close();
in.close();
echoSocket.close();
}
}
, что является бесстыдным редактором этого учебного примера .
Я не уверен насчет входа в систему через ssh, но я подозреваю, что вы можете получить его, используя javax.net.ssl.SSLServerSocket вместо ServerSocket.
Осталось сделать что-то разумное с пользовательским вводом, вместо того, чтобы просто бросить его обратно в их лица.
В зависимости от количества команд и их параметров вы можете выполнить синтаксический анализ команды самостоятельно или найти библиотеку, которая ее обрабатывает.