telnetd(8) DARPA

書式

/usr/sbin/in.telnetd [-hns ] [-a authmode ] [-D debugmode ] [-L loginprg ] [-S tos ] [-X authtype ] [-edebug ] [-debug port ]

説明

telnetd プログラムは、 DARPA telnet 対話的通信プロトコルをサポートするサーバである。 telnetd は、通常は /etc/services ファイル ( services(5) を参照) に記述されている telnet ポートへの接続要求を受けて、 インターネットサーバ ( inetd(8) を参照) から起動される。 -debug オプションは、 telnetdinetd(8) ではなく、手動で起動するために使われる。 この方法で起動した場合、 別の TCP ポート番号で telnetd を実行するために、 port を指定することができる。

telnetd プログラムは以下のオプションを受け付ける:

-a authmode
このオプションは、どのモードが認証に使われるかを指定するために用いられる。 このオプションは、 telnetd が認証をサポートする設定でコンパイルされている場合にのみ、 有効である点に注意すること。 これは現在のバージョンでは使用できない。 authmode のとしては、以下の値を受け付ける:

debug
認証のデバッグコードを有効にする。
user
リモートユーザは、自分自身であること示すための 有効な認証情報を提供した時にのみ接続が許可される。 この場合、指定されたアカウントに対しては、 パスワードの提供なしに接続が許可される。
valid
リモートユーザは、自分自身であること示すための 有効な認証情報を提供した時にのみ接続が許可される。 リモートユーザに指定されたアカウントに対する 自動的な接続が許可されていなければ、 login(1) コマンドは、必要となる別のユーザ認証を行う。
other
ある種の認証情報を提供した場合のみ接続を許可する。 このオプションは、現在のところ、 既存のいずれの認証方法でもサポートされていないため、 valid オプションを指定するのと同じである。
none
デフォルトではこの状態である。 認証情報は要求されない。 もし認証情報がなかったり不十分であれば、 login(1) プログラムによって必要となるユーザ認証を行う。
off
認証コードを無効にする。 すべてのユーザ証明が login(1) プログラムによって行われる。

-D debugmode
このオプションはデバックのために使われる。 これによって telnetd にデバッグ情報を表示させ、 telnetd の動作をユーザが見ることができる。 以下に示すような、いくつかの debugmode がある:

options
telnet オプションのネゴシエーションについての情報が表示される。
report
options で表示される情報に加えて、 どのような操作が行われているのかという、 いくつかの付加的な情報が表示される。
netdata
telnetd が受け取ったデータストリームを表示する。
ptydata
pty に書かれたデータを表示する。
exercise
まだ実装されていない。

-edebug
このオプションは、 telnetd が暗号化をサポートする設定でコンパイルされている場合にのみ、 有効である点に注意すること。 -edebug オプションは、暗号化デバッグコードを有効にするために使われる。
-h
ログインが完了するまでホストに特有の情報を表示しないようにする。
-L loginprg
このオプションは、別の login プログラムを指定するために使われる。 デフォルトでは、 /bin/login が使われる。
-n
TCP keep-alives を無効にする。 通常 telnetd は、 クライアントがまだ存在するかを決定するために、 ある一定期間アイドルになっている接続を調べる TCP keep-alive 機構を有効にしている。 これにより、クラッシュしたり、 すでに接続出来ないようなマシンからの アイドルコネクションを解消できる。
-s
このオプションは、 telnetdSecurID カードをサポートする設定でコンパイルされている場合にのみ、有効である。 このオプションは、 -s オプションを login(1) にそのまま渡すようにするので、 login(1) が、 SecurID によって認証されたログインのみを許可していることを表す、 -s フラグをサポートしている場合にのみ役立つ。 これは通常、ファイアウォールの外側からの リモートログインを制御する場合に役立つ。
-S tos
telnet 接続の IP サービスタイプ (type-of-service, TOS) オプションの値を tos に設定する。
-X authtype
このオプションは、 telnetd が認証オプションをサポートする設定でコンパイルされている場合にのみ、 有効である。 このオプションは authtype 認証の使用を不可にし、 telnetd を再コンパイルすることなく、 特定の認証タイプを一時的に使用不可にすることができる。

ファイル /etc/issue.net が存在する場合、 telnetd は、telnet セッションのログインプロンプトより前に、 そのファイルの内容を表示する ( issue.net5 を参照すること)。

telnetd は、疑似端末デバイス ( pty(4) を参照) をクライアントに割り当て、login プロセスを生成する。 この login プロセスは、 stdin stdout stderr として疑似端末のスレーブ側を使用する。 telnetd は、 telnet プロトコルを実装し、 リモートクライアントとログインプロセスの間に文字を受け渡すことにより、 疑似端末のマスター側を操作する。

telnet セッションが開始されると、 telnetd は、以下の telnet オプションを希望していることを示すために、 クライアント側にこれらの telnet オプションを送信する。 これらのオプションの詳細については、以下で説明されている:

DO AUTHENTICATION
WILL ENCRYPT
DO TERMINAL TYPE
DO TSPEED
DO XDISPLOC
DO NEW-ENVIRON
DO ENVIRON
WILL SUPPRESS GO AHEAD
DO ECHO
DO LINEMODE
DO NAWS
WILL STATUS
DO LFLOW
DO TIMING-MARK

クライアントに割り当てられた疑似端末は、 ``cooked'' モードで動作し、 XTABS CRMOD が有効になるように設定される ( tty(4) を参照すること)。

telnetd は、ローカル側で有効な、以下の telnet オプションをサポートしている:

"WILL ECHO"
LINEMODE オプションが有効な場合、 端末の現在のエコー状態を示すために、 WILL ECHO または WONT ECHO がクライアントに送信される。 端末エコーが必要ない場合、 端末にエコーする必要があるデータを telnetd がエコー処理することを示すために、 WILL ECHO が送信され、何もエコーされない。 端末エコーが必要な場合、 telnetd が端末エコーも行わないことを示すために、 WONT ECHO が送信されるので、 端末エコーが必要な場合はクライアントが行わなければならない。
"WILL BINARY"
クライアントが、 通常のネットワーク仮想端末が用いる 7 ビットのデータではなく、 8 ビットのデータを送信するように指定する。
"WILL SGA"
IAC GA すなわち go ahead コマンドを送信しないように指定する。
"WILL STATUS"
クライアントから要求があった場合に、全ての TELNET オプションの現在の状況を送信するように指定する。
"WILL TIMING-MARK"
DO TIMING-MARK コマンドを受信した場合、常にそれに対して WILL TIMING-MARK を返信する。
"WILL LOGOUT"
DO LOGOUT を受信した場合、 WILL LOGOUT を返信し、 TELNET セッションをシャットダウンする。
"WILL ENCRYPT"
telnetd がデータの暗号化をサポートする設定で コンパイルされている場合にのみ送信され、 データ列を復号化するように指定する。

telnetd は、リモート側で有効な、以下の TELNET オプションをサポートしている:

"DO BINARY"
このオプションは、 telnetd が 8 ビットのデータ列を受信するように指定するために送られる。
"DO LFLOW"
クライアントがフロー制御文字をリモート側で処理するように指定する。
"DO ECHO"
このオプションは実際にはサポートされていないが、 WILL ECHO に対して正しく応答しない、 4.2BSD の telnet(1) クライアントを識別するために送られる。 WILL ECHO を受信すると、 DONT ECHO が返答として送信される。
"DO TERMINAL-TYPE"
接続のクライアント側に割り当てられた端末の タイプ名を要求できるように指定する。
"DO SGA"
IAC GA すなわち go ahead コマンドを受信する必要がないように指定する。
"DO NAWS"
ウィンドウ (ディスプレイ) のサイズが変わった場合に、 クライアントがサーバに知らせることを要求する。
"DO TERMINAL-SPEED"
クライアントに割り当てられたシリアルラインの 速度に関する情報を要求できるように指定する。
"DO XDISPLOC"
telnet クライアントが使用している X ウィンドウのディスプレイの名前を要求できるように指定する。
"DO NEW-ENVIRON"
RFC 1572 に示されている 環境変数に関する情報を要求できるように指定する。
"DO ENVIRON"
RFC 1408 に示されている 環境変数に関する情報を要求できるように指定する。
"DO LINEMODE"
telnetd が linemode をサポートする設定でコンパイルされている場合にのみ送信され、 クライアントに行単位の処理を行うことを要求する。
"DO TIMING-MARK"
telnetd が linemode と kludge linemode の 両方をサポートする設定でコンパイルされ、 クライアントが WONT LINEMODE を返信した場合にのみ、送信される。 クライアントが WILL TM を返信した場合、 クライアントが kludge linemode をサポートしていると見なす。 [-k ] オプションは、この機能を無効にするために使用される点に注意すること。
"DO AUTHENTICATION"
telnetd が認証機能をサポートする設定でコンパイルされている場合にのみ送信され、 自動ログインに使用する認証情報を受信するようにする。
"DO ENCRYPT"
telnetd がデータの暗号化をサポートする設定で コンパイルされている場合にのみ送信され、 データ列を復号化するように指定する。

ファイル

/etc/services /etc/issue.net

準拠

RFC-854
TELNET PROTOCOL SPECIFICATION
RFC-855
TELNET OPTION SPECIFICATIONS
RFC-856
TELNET BINARY TRANSMISSION
RFC-857
TELNET ECHO OPTION
RFC-858
TELNET SUPPRESS GO AHEAD OPTION
RFC-859
TELNET STATUS OPTION
RFC-860
TELNET TIMING MARK OPTION
RFC-861
TELNET EXTENDED OPTIONS - LIST OPTION
RFC-885
TELNET END OF RECORD OPTION
RFC-1073
Telnet Window Size Option
RFC-1079
Telnet Terminal Speed Option
RFC-1091
Telnet Terminal-Type Option
RFC-1096
Telnet X Display Location Option
RFC-1123
Requirements for Internet Hosts -- Application and Support
RFC-1184
Telnet Linemode Option
RFC-1372
Telnet Remote Flow Control Option
RFC-1416
Telnet Authentication Option
RFC-1411
Telnet Authentication: Kerberos Version 4
RFC-1412
Telnet Authentication: SPX
RFC-1571
Telnet Environment Option Interoperability Issues
RFC-1572
Telnet Environment Option

バグ

いくつかの TELNET コマンドは、部分的にしか実装されていない。

オリジナルの 4.2 BSD の telnet(1) のバグに対処するため、 telnetd は、ある種のうさんくさいプロトコル通信を行うことにより、 リモートクライアントが実際に 4.2 BSD の telnet(1) であるかを判断しようとする。

バイナリモードは、よく似たオペレーティングシステム (この場合 Unix) 間以外では、 一般的な互換性がない。

リモートクライアントから受け取った端末タイプ名は、小文字に変換される。

telnetd は、 TELNET IAC GA (go ahead) コマンドを絶対に送らない。

ソースコードが分かりやすくない。

翻訳者謝辞

この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> による翻訳を参考にさせていただいた。