telnetd —
DARPA
telnet プロトコルサーバ
/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
オプションは、
telnetd を
inetd(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
- このオプションは、
telnetd が SecurID
カードをサポートする設定でコンパイルされている場合にのみ、有効である。
このオプションは、
-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.net(5)
を参照すること)。
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
telnet(1),
login(1),
issue.net(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
いくつかの 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/>
による翻訳を参考にさせていただいた。