W2K の telnet サービスを使う

XP のことは知らない。

Windows 2000 では Telnet サーバ機能を持っているが、 これはサービス(TlntSvr)として提供されており、かつ、 デフォルトでは起動していない。

標準の設定では、サービスを起動しただけでは 通常の unix の端末などから telnet 接続してもログインすることができない。 たぶん嫌がらせなので、この設定は変更する。 例によって Administrator 権限のあるユーザでログオンし、DOS 窓から設定を行う。

C:> tlntadmn
(略)
3) レジストリの設定を表示/変更します ...
(略)
7) NTLM
(略)
この値を変更しますか? [y/n]y
NTLM [ 現在の値 = 2; 使用できる値は、0、1、2 のいずれかです ] :1
NTLM を 1 に設定しますか? [y/n]y

サービスの設定で自動起動にしておけば、再起動しても安心だ。 つまり、自動起動にする設定は tlntadmn ではできないということ。 「Telnet Server Admin」ではできないのか?サービスの起動/終了はできるくせに? 不愉快な話だ。

ちなみに、

  0:クリアテキスト認証
  1:NTLM認証失敗後クリアテキスト認証
  2:NTLM認証のみ

というらしいが、なぜろくすっぽ使えもしないものがデフォルトなのかは謎である。 しかも、この変更をするだけなのに何度も何度も confirm されるのもうっとうしい。 まったく人を不愉快にさせるインタフェイスである。

Windows 2000 の telnet サービスは同時に2セッションまでしか張れないらしい。 意味の無い制限だ。


tlntadmn での設定が必要ということはコンソールに触れなければ設定ができないことを 意味するわけだが、リモートで設定を行うにはどうしたらいいのか? いろいろ調べた結果、レジストリを直接いじってしまえばサービスの開始設定くらいはできることがわかった。 レジストリを編集するには regedit を使えばいいのだが、 悪しき慣例によりこれも GUI が使える(コンソールにて対話操作が可能である)ことが 前提であり、遠隔から設定ができない。 そこで、Windows 2000 の CD に標準添付されている Windows 2000 Support Tools を使う。 これをインストールすると reg コマンドが手に入るので、これを用いて設定する。

reg add \\%MACHINE_NAME%\HKLM\SYSTEM\CurrentControlSet\Services\TlntSvr
  /v Start /t REG_DWORD /d 0x02 /f
reg add \\%MACHINE_NAME%\HKLM\SOFTWARE\Microsoft\TelnetServer\1.0
  /v NTLM /t REG_DWORD /d 0x01 /f

もちろん IPC$ は事前に通しておく必要がある。


telnet をクライアントとして利用する場合は、 デフォルトではもちろん SJIS な端末として動作するが、 実は EUC で動作させることもできる。Ctrl-] でエスケープして オプションを調べると、

Microsoft Telnet> set ?
NTLM            NTLM 認証を使用します。
LOCAL_ECHO      ローカル エコーを使用します。
TERM x          (x には ANSI、VT100、VT52 または VTNT が入ります)
CODESET x       (x には Shift JIS,
                        Japanese EUC,
                        JIS Kanji,
                        JIS Kanji(78),
                        DEC Kanji または
                        NEC Kanji がはいります)
CRLF            CR と LF の両方を送信します。

けっこういろいろ対応していることがわかる。 ここで示されている通り、set codeset Japanese EUC とすることで それ以降、日本語 EUC な端末として動作するようになる。 この codeset の指定はどこかに記憶されるようだが、どこに記憶されるのかは不明。


NTLM 認証
Windows NT LAN Manager 認証
[$Revision: 1.4 $ $Date: 2007.09.20 09:31:16 $]
[EOF]