有人能推荐一个执行所有典型协议(ssh等)的java FOSS服务器吗

有人能推荐一个执行所有典型协议(ssh等)的java FOSS服务器吗,java,telnet,Java,Telnet,我想将telnet的功能添加到我的应用程序中,用户可以在其中键入命令等。我想要一个简单的Java telnet服务器,通过它我可以提供身份验证策略 通过“telnet”,我指的不是lib提供的telnet连接,而是更多的东西。我希望无聊的协议内容与一个shell一起完成,这个shell有我可以用来处理和执行命令行的钩子。这些命令的位置或内容当然是我的实现 此问题与如何启动套接字服务器或其他协议管道类型无关。Telnet服务器只执行Telnet 你可能会觉得合适 “目标受众: 希望将合理的teln

我想将telnet的功能添加到我的应用程序中,用户可以在其中键入命令等。我想要一个简单的Java telnet服务器,通过它我可以提供身份验证策略

通过“telnet”,我指的不是lib提供的telnet连接,而是更多的东西。我希望无聊的协议内容与一个shell一起完成,这个shell有我可以用来处理和执行命令行的钩子。这些命令的位置或内容当然是我的实现


此问题与如何启动套接字服务器或其他协议管道类型无关。

Telnet服务器只执行Telnet

你可能会觉得合适

“目标受众:
希望将合理的telnet访问集成到其应用程序中的开发人员。”

telnet服务器只做telnet

你可能会觉得合适

“目标受众:
开发人员希望将合理的telnet访问集成到他们的应用程序中。”

根据我的经验,telnet就是telnet,ssh就是ssh。。。如果您想要后者,那么您可以查看以下内容:

不过我从来没用过

您还可以使用本机操作系统SSH(如果有)进行隧道传输,然后在服务器上运行常规telnet。如果只是一个自定义命令shell,那么创建自己的telnet访问一点也不复杂。正如另一张海报所提到的,有一些图书馆使它变得简单


…但是ssh会更安全、更直接。

根据我的经验,telnet就是telnet,ssh就是ssh。。。如果您想要后者,那么您可以查看以下内容:

不过我从来没用过

您还可以使用本机操作系统SSH(如果有)进行隧道传输,然后在服务器上运行常规telnet。如果只是一个自定义命令shell,那么创建自己的telnet访问一点也不复杂。正如另一张海报所提到的,有一些图书馆使它变得简单


…但是ssh会更安全、更直接。

你所说的“telnet进入我的应用程序,在那里他们可以输入命令等”到底是什么意思

由于telnet和ssh都需要一些应用程序在远程机器上运行(通常是命令shell的实例),因此它们实际上只为命令提供传输机制。Telnet尤其可能(并且已经)被滥用,通过tcp连接发送一般文本命令。您可以使用命令
telnet www.target-domain.com 80
浏览web,并手动输入所有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来实现

剩下的就是对用户输入做一些合理的事情,而不是把它扔回到他们的脸上。
根据命令数量及其参数,您可以自己解析命令,也可以找到一个库来为您处理它。

您所说的“telnet进入我的应用程序,他们可以在其中键入命令等”到底是什么意思

由于telnet和ssh都需要一些应用程序在远程机器上运行(通常是命令shell的实例),因此它们实际上只为命令提供传输机制。Telnet尤其可能(并且已经)被滥用,通过tcp连接发送一般文本命令。您可以使用命令
telnet www.target-domain.com 80
浏览web,并手动输入所有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来实现

剩下的就是对用户输入做一些合理的事情,而不是把它扔回到他们的脸上。
根据命令的数量及其参数,您可以自己解析命令,也可以找到一个库来处理它。

我希望ssh、telnet等可以放在一个java库中,这样用户就不必单独处理ssh等。我记得Mina只处理普通的香草telnet。这个ssh刚刚被折叠到“Mina”中该链接中的描述是:“Apache SSHD是一个100%纯java库,在客户端和服务器端都支持SSH协议。”从我的角度来看,telnet!=嘘。。。它们与ftp和http一样不同。这些链接看起来指向一个实际的ssh实现。您是否试图同时支持telnet和ssh,即:用户可以telnet in或用户可以ssh in?那么为什么要支持ssh呢?我希望在一个java库中包含ssh、telnet等,这样用户就不必单独处理ssh等。Mina(如果我记得的话)只支持普通的香草telnet。此ssh刚刚被折叠到“Mina”项目中,因为它构建在底层的迷你通信API中,该链接中的描述如下:“Apache SSHD是一个100%纯java库,在客户端和服务器端都支持SSH协议。“从我的角度来看,telnet!=嘘。。。它们与ftp和http一样不同。这些链接看起来指向一个实际的ssh实现。您是否试图同时支持telnet和ssh,即:用户可以telnet in或用户可以ssh in?那么为什么要支持ssh呢?我希望所有协议都可以在一个库中使用,这样用户就不必处理很多单独的事情。据我所知,没有这样的事情。我希望所有协议都可以在一个库中使用,所以用户不必处理很多不同的事情。就我所知,没有这样的事情存在。我指的是