Telnetを使用してLinuxユーザーとしてログインすると、プロンプトが表示されます。

Telnetを使用してLinuxユーザーとしてログインすると、プロンプトが表示されます。

Ubuntuサーバーのポート23の設定を見つけようとしています。前任者はやや厳しい方法で設定し、機能を新しいシステムに移行する必要があります。おおまかにどのように動作するかを知っていますが、詳細はわからないので、今知っておくべきことです。おおよその機能は次のとおりです。

  • ユーザーはポート23を介して通常のLinuxユーザーとしてサーバーにログインします(常に同じユーザー)。詳しくは下記から
  • ログインすると、いくつかの情報を入力するように求められます。
  • メッセージに従って情報を入力してログアウトします。

デフォルトのシェルはbashです(個人情報を保護するためにユーザー名と番号が変更されました)。

# grep theuser /etc/passwd
theuser:x:1111:1111::/home/theuser:/bin/bash

.bash_profileスクリプトがログイン時にユーザーをプロンプトにリダイレクトするのを見ることができます。

$ cat /home/theuser/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/scripts

export PATH
unset USERNAME

/home/theuser/scripts/prompts
exit

したがって、それについて不思議なことはありません。しかし、私の質問は、ポート23が通常のLinuxユーザーのログインプロンプトにどのように正確に関連付けられているのですか?次のようにログインできるので、これが本当だと確信しています。

$ telnet localhost 23
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
machinename login: theuser
Password:
Last login: Fri Mar 24 14:25:48 CST 2017 from localhost on pts/5
prompt 1:

ポート23で実行されているプロセスを確認すると、次の結果が表示されます。

$ netstat -tulpn | grep 23
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      2222/inetd

したがって、接続はによって処理されますinetd。しかし、inetd私が何をしているのかわからないので、それは私には役立ちません。表示すると、/etc/inetd.conf次の行が表示されます。

telnet      stream  tcp nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd

しかし、それはあまり役に立ちません。私はtelnetそれがこのコンピュータで実行されていることをすでに知っています。telnetユーザーをログインプロンプトにリダイレクトするように設定する方法を知っておく必要があります。

答え1

TELNET サーバーに TCP ポート 23 をリッスンさせることは「トリッキー」ではありません。これはノーマル(今世紀にTELNETを使用することの異常を考慮しない限り)。それはよく知られているポート番号TELNETサービスに使用されます。

in.telnetdユーザーをログインプロンプトに「リダイレクトする」ように「設定」されていません。接続クライアントにログイン画面を表示する何ができるか。マニュアルページ(qv)は非常に明確です。

Telnetdは疑似端末装置をクライアントに割り当て、次に[…] ] 疑似端末を stdin、stdout、stderr に依存させるログインプロセスを生成する方法で動作します。 Telnetd は擬似端末のマスター側を操作し、Telnet プロトコルを実装し、リモートクライアントとログインプロセス間で文字を渡します。

これログインプロセスプログラムが実行login中で、ログインプロンプトが表示されます。

関連情報