EN JA
TELNETD(8)
TELNETD(8) FreeBSD System Manager's Manual TELNETD(8)

名称

telnetdDARPA TELNET プロトコルサーバ

書式

/usr/libexec/telnetd [ -46BUhlkn][ -D debugmode][ -S tos][ -X authtype][ -a authmode][ -edebug][ -p loginprog][ -u len][ -debug [ port]]

解説

telnetd コマンドは、 DARPA 標準 TELNET 仮想端末プロトコルをサポートするサーバです。 telnetd は、通常は、 /etc/services ファイル ( services(5) 参照) に記述されている TELNET ポートへの接続要求を受けて、インターネットサーバ ( inetd(8) 参照) から起動されます。 -debug オプションは、 inetd(8) の代わりに telnetd を手動で起動するために用いられます。このように手動で起動された場合には、代わりの TCP ポート番号で telnetd を動かすために port を指定する事ができます。

telnetd コマンドには、以下のオプションがあります:

-4
telnetd に IPv4 アドレスだけを使うよう強制します。
-6
telnetd に IPv6 アドレスだけを使うよう強制します。
-a authmode
このオプションは、どのモードが認証に使われるかを指定するために用いられます。このオプションは、 telnetdAUTHENTICATION オプションをサポートする設定で構築された場合においてのみ役に立つことに注意して下さい。以下に示すようないくつかの authmode があります:
debug
認証のデバッグコードを有効にします。
user
リモートユーザは、自分自身であること示すための有効な認証情報を提供した時にのみ接続が許可されます。この場合、指定されたアカウントに対しては、パスワードの提供なしに接続が許可されます。
valid
リモートユーザが自分自身であることを示すための有効な認証情報を提供した時にのみ接続が許可されます。リモートユーザが指定されたアカウントに対する自動的な接続が許可されていなければ login(1) コマンドは、必要となるユーザ認証を実施します。
other
ある種の認証情報を提供した場合のみ接続を許可します。現在このオプションは、すべての認証方法でサポートされていないため -a valid オプションを指定した時と同じ動作をします。
none
デフォルトでは、この状態です。認証情報は、要求されません。もし認証情報がなかったり不十分であれば、 login(1) プログラムによって必要となるユーザ認証を実施します。
off
認証コードを無効にします。すべてのユーザ証明が login(1) プログラムによって行われます。
-B
bftp サーバモードを指定します。このモードでは、 telnetd は、ユーザの通常のシェルの代りに bftp(1) セッションをログインに開始させます。 bftp デーモンモードでは、通常のログインは、サポートされません。これは、通常の TELNET ポート以外のポートで使用される必要があります。
-D debugmode
このモードは、デバッグのために用いられます。これによって telnetd がデバッグ情報を表示し、ユーザは、 telnetd が何をしているのかを見ることが許されます。以下に示すようないくつかの debugmode があります:
options
TELNET オプションのネゴシエーションについての情報が表示されます。
report
options で表示される情報に加えて、どのような操作が行われているのかという、いくつかの付加的な情報が表示されます。
netdata
telnetd が受け取ったデータストリームを表示します。
ptydata
pty に書かれたデータを表示します。
exercise
まだ実装されていません。
-debug
telnetd によって作られたソケットについてのデバッグを可能にします ( socket(2)SO_DEBUG 参照)。
-edebug
telnetd がデータの暗号化をサポートする設定で構築されている場合に、 -edebug オプションは、暗号化デバッグコードを有効にするために使われます。
-h
ログインが完了するまでホストに特有の情報を表示しないようにします。
-k
このオプションは、 telnetd が linemode と kludge linemode をサポートする設定で構築されているときにのみ有効です。 -k オプションが指定されている場合で、もしリモートのクライアントが LINEMODE オプションをサポートしていなければ、 telnetd は、character at a time mode で動きます。この様な状態でも kludge linemode をサポートしますが、リモートのクライアントが要求した場合のみ kludge linemode になります (これは、クライアントが DONT SUPPRESS-GO-AHEADDONT ECHO を送信することによって行われます)。 -k オプションは、kludge linemode をサポートしていないリモートクライアントがあるが、(もしクライアントが DO TIMING-MARK に対して WILL TIMING-MARK を応答する事で) 自己発見的に kludge linemode をサポートすると認められる様な場合にとても便利です。
-l
line mode を指定します。クライアントを強制的に line-at-a-time mode になるよう試みます。もし LINEMODE オプションがサポートされてなければ、kludge linemode になります。
-n
TCP keep-alives を行いません。通常、 telnetd は、 TCP keep-alive を有効にしています。なぜなら、クラッシュしたり、すでに接続出来ないようなマシンからのアイドルコネクションを解消するために、ある期間アイドルだった場合にクライアントとの接続がまだ存在するかどうかを調べる必要があるからです。
-p loginprog
ログインを完了する際に実行されるコマンドとして login(1) 以外のコマンドを指定します。指定されたコマンドは、通常の login と同じ引数を解釈できる必要があります。
-S tos
telnet の接続用に IP サービス種別 (TOS) オプションを値 tos に設定します。この値には、数値の TOS 値、もしくはシステムがサポートしていれば、 /etc/iptos ファイルにある記号の TOS 名が指定可能です。
-u len
このオプションは、リモートホスト名を保持している utmp 構造体のフィールドの大きさを指定するために使われます。もし解決されたホスト名が len よりも長ければ、ホスト名の代わりにドットで区切られたアドレスが使われます。これによりフィールドを超えるようなとても長いホスト名を一意に特定できるようにします。 -u0 を指定することによって、ドットで区切られたアドレスだけが utmp ファイルに書き込まれるようにします。
-U
このオプションは、 telnetd が、 gethostbyaddr(3) ルーチンを通してシンボルでの名前にマップされないようなアドレスからのコネクションを拒絶するようにします。
-X authtype
このオプションは、 telnetd が認証オプションをサポートする設定で構築されたときにのみ有効です。 authtype 認証を無効にし、 telnetd を再コンパイルすることなしに特定の認証タイプを一時的に無効にするために使用することができます。利用可能な authtype 値は、 KERBEROS_V4, KERBEROS_V5, SPX, MINKSRA を含んでいます。これらのオプションは、 -a オプションから完全に独立しています。

telnetd は、仮想端末デバイス ( pty(4) 参照) をクライアントに割り当てます。そして、 stdin, stdout, stderr として仮想端末のスレーブ側を使用する login プロセスを生成します。 telnetd は、 TELNET プロトコルを実装し、リモートクライアントと login プロセスとの間のキャラクタを通過させることにより、仮想端末のマスタ側を操作します。

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”モードで動作し、 XTABSCRMOD ( 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
このコマンドは、実際にはサポートされませんが、クライアントが 4.2BSD telnet(1) クライアント ( WILL ECHO に正しく応答しない) であるかを判断するために送信されます。もし、 WILL ECHO が受信された場合は、それに対して DONT ECHO が送信されます。
DO TERMINAL-TYPE
接続のクライアント側に割り当てられた端末タイプの名前を要求できるように指定します。
DO SGA
IAC GA すなわち go ahead コマンドを受信する必要がないように指定します。
DO NAWS
ウィンドウ (ディスプレイ) のサイズが変わった場合に、クライアントがそれをサーバに知らせる事を要求します。
DO TERMINAL-SPEED
クライアントに割り当てられたシリアルラインの速度に関する情報を要求できるように指定します。
DO XDISPLOC
telnet クライアントが使用している X Window System のディスプレイの名前を要求できるように指定します。
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 がデータの暗号化をサポートする設定で構築された場合のみ送信され、データ列に対して暗号を復号するように指定します。

デフォルトでは、 telnetd は、 /etc/gettytab から he, hn, im のケーパビリティを読み込み、 (存在すれば) これらの情報を使用し、 login: プロンプト前に何を表示するかを判定します。 if ケーパビリティを使用して、System V スタイルの /etc/issue ファイルも使用できます。これは、 im に優先します。 im または if に指定された情報は、コンソールとリモートの両方のログインに対して表示されます。

関連ファイル

/etc/services
/etc/gettytab
/etc/iptos
(サポートされている場合)
/usr/ucb/bftp
(サポートされている場合)

関連項目

bftp(1), login(1), telnet(1) (サポートされている場合), gettytab(5)

規格

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

歴史

IPv6 サポートは、WIDE/KAME プロジェクトによって追加されました。

バグ

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

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

バイナリモードは、よく似たオペレーティングシステム (この場合 Unix) 間以外では、互換性がありません。

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

telnetd は、 TELNET IAC GA (go ahead) コマンドを絶対に送りません。

August 28, 2008 FreeBSD