1

ユーザーがコマンドなどを入力できるアプリに telnet する機能を追加したいと考えています。認証戦略を提供できる単純な Java Telnet サーバーが必要です。

「telnet」とは、どの lib が telnet 接続を提供するかを指しているのではなく、もう少し何かを指しています。コマンド ラインの処理と実行に使用できるフックを備えたシェルと一緒に、退屈なプロトコル処理を実行したいと考えています。これらのコマンドがどこにあるか、または何であるかは、もちろん私の実装です。

この q は、ソケット サーバーやその他のプロトコル プラミング タイプを起動する方法に関するものではありません。

4

3 に答える 3

1

私の経験では、telnet は telnet、ssh は ssh です...後者が必要な場合は、http: //mina.apache.org/sshd/のようになります。

使ったことないですけどね。

ネイティブ オペレーティング システムの SSH (ある場合) を使用してトンネリングし、サーバー上で通常の telnet を実行することもできます。独自の telnet アクセスを作成するのは、それが単なるカスタム コマンド シェルであれば、まったく複雑ではありません。また、他のポスターが言及しているように、それを簡単にするライブラリがあります。

...しかし、ssh の方が安全で簡単です。

于 2010-02-22T02:51:01.650 に答える
0

「コマンドなどを入力できるアプリにtelnetで接続する」とは、正確にはどういう意味ですか?

telnet と ssh はどちらも、リモート マシン (ほとんどの場合、コマンド シェルのインスタンス) で実行するアプリケーションを必要とするため、実際にはコマンドのトランスポート メカニズムのみを提供します。特に Telnet は、tcp 接続を介して一般的なテキスト コマンドを送信するために悪用される可能性があります (実際に悪用されています)。コマンドを使用して Web をブラウズし、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 ログインについてはよくわかりませんが、ServerSocket の代わりに javax.net.ssl.SSLServerSocket を使用してアクセスできると思われます。

残っているのは、単にユーザーの顔にそれを投げ返すのではなく、ユーザー入力に対して賢明なことを行うことです。コマンドとそのパラメーターの量に応じて、コマンドを自分で解析するか、それを処理するライブラリを見つけることができます。

于 2010-06-19T13:29:29.177 に答える
0

Telnet サーバーは telnet のみを行います。

http://telnetd.sourceforge.net/が適しているかもしれません。

「対象読者: 適切な telnet アクセスをアプリケーションに統合したいと考えている開発者。」

于 2010-02-22T02:28:57.050 に答える