連載
» 2017年07月06日 05時00分 UPDATE

Tech TIPS:WindowsのTelnetクライアントの使い方 (1/2)

ネットワークサービスのトラブルシューティングなどでは、Telnetコマンドを使って直接サーバに接続してデバッグを行うと便利なことがある。その際に必要なポート名の指定やTelnetのコマンドモード、漢字コードの設定方法などを解説する。

[打越浩幸,デジタルアドバンテージ]

対象OS:Windows 7/Windows 8/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2


Telnetコマンドとは?

 Telnetは、管理作業などを行うためにネットワーク経由でリモートのマシンへ「Telnetプロトコル」(→プロトコル規格書)でログオンする場合にしばしば用いられてきたツールである(現在では通信を暗号化できるSSHで代替されることが多いが)。

 だがそれ以外にも、Webサーバや各種のネットワークサービスのデバッグなどのために、Telnetクライアントプログラムを使う機会も少なくない。

 Telnetでは、基本的には単純な文字コードでしか通信ができないが、このことが逆に、ネットワークプロトコルにおける、プリミティブな(基本的な)コマンドやデータ、ステータスなどのやりとりを調べるために役に立つ。

 例えばWebサーバやメールサーバとの通信がエラーになっても、クライアントプログラムによっては、そのエラーの詳細を報告してくれないことが多い。単に「通信できません」と表示されたり、「名前が見つかりません」というような、曖昧なメッセージしか表示されなかったりする。

 このような場合、実際に何が起こっているのか、どうしてエラーとなるのかを調べるには、サーバへTelnetで接続して手動でコマンドを送信し、その結果のメッセージを直接見ることができれば、簡単に解決することもよくある。

Telnetの利用例 Telnetの利用例
TelnetでSMTP(メール)サーバに接続して、直接コマンドを入力しているところ。テキストベースの簡単なプロトコルなら、Telnetクライアントを使ってプロトコルがどうなっているのか、どんなコマンドを受け付けるのか、エラーが起こるとどうなるのか、などを試したり、デバッグしたりできる。

 Windows系のOSではTelnetを使うのはあまり一般的ではないが、UNIXやLinuxなどでは、Telnetによるリモートシステムへのログインは広く普及しているコンピュータの利用方法である。もっともセキュリティのことを考えると、TelnetではなくSSHを使うのが望ましいが、Windows OSにはSSHのサーバもクライアントも標準では用意されていない。Windows OS向けにSSHクライアントを導入する方法については、TIPS「Windowsでsshクライアント『PuTTY』を使う」を参照していただきたい。

 本TIPSでは、Windows OSに標準で付属しているTelnetクライアントの基本的な使い方を紹介する。

Telnetクライアントをインストールする

 Telnetのクライアントプログラムはデフォルトではインストールされていない。ユーザーが必要に応じて機能を追加する必要がある。

 Telnetクライアントを追加するには、まずコントロールパネルの[プログラム]−[プログラムと機能]を開き、左側のメニューにある[Windowsの機能の有効化または無効化]をクリックする。Windows 8/Windows Server 2012以降なら、[スタート]ボタンを右クリックして(もしくは[Windows]+[X]キーで)表示されるクイックアクセスメニューから[プログラムと機能]を選んでもよい。

 Windows 10 Creator Update以降の場合は、クイックアクセスメニューから[アプリと機能]を実行して[アプリと機能]の設定画面を表示させ、右側にある[プログラムと機能]のリンクをクリックしてから、[Windowsの機能の有効かまたは無効化]を実行する。

 すると追加する機能の一覧画面が表示されるので、[Telnetクライアント]という項目を選んで追加する。Windows Serverの場合はサーバマネージャーの画面が表示されるので、[役割と機能の追加]で[Telnetクライアント]機能を追加する。

Telnetクライアント機能を追加する Telnetクライアント機能を追加する
Telnetクライアントはデフォルトではインストールされていないので、必要なら手動でインストールすること。これはWindows 8.1の機能追加画面の例。
  (1)Telnetクライアントをインストールするにはこのチェックボックスをオンにする。
  (2)こちらはTelnetのサーバ機能。これをインストールしておくと、リモートからログインしてコマンドプロンプトで操作できる。ただしWindows 10/Windows Server 2016以降ではTelnetのサーバ機能は廃止され、利用できない(この項目は表示されない)。

 なおTelnetのサーバ機能(リモートからログインしてコマンドプロンプトを使わせる機能)は、Windows 10およびWindows Server 2016以降では廃止され、インストールできなくなっている(Telnetのクライアント機能のみ利用可能)。

Telnetの基本的な使い方

 Telnetの一番基本的な使い方は、コマンドプロンプトを起動して、そこで接続先サーバ名(ホスト名)を指定してTelnetクライアントを起動するという方法である。

C:\>telnet <ホスト名>



 これを実行すると、<ホスト名>で指定されたリモートマシンの「Telnetサーバ」へ接続される。<ホスト名>には、実際にはコンピュータの名前やFQDNで指定したマシンの名前、IPアドレスなどを指定する。

 Telnetサーバとは、TCPの(標準では)23番ポートでリッスン(待ち受け)している、仮想的な端末との通信プロトコルを提供するサービスである。このサービスに接続すると、リモートマシン上のコンソールで直接文字を入力して、コマンドを実行しているのと同じ効果が得られる。

C:\>telnet myserver01 ……リモートのWindows Serverへtelnet接続してみる
Microsoft Telnet クライアントへようこそ ……Telnetクライアントの表示

エスケープ文字は 'CTRL+]' です  ……「エスケープ文字」については後述
Welcome to Microsoft Telnet Service ……Telnetサーバからの応答

login: user01 ……ログオン名とパスワードを入力する
password:

*===================================
Microsoft Telnet Server. ……Windows Server 2012 R2のTelnetサーバサービスの応答
*===================================
C:\Users\user01.MYSERVER01>dir ……dirコマンドを実行してみる
 ドライブ C のボリューム ラベルは SERVER2012 です
 ボリューム シリアル番号は 6D3F-45C2 です

 C:\Users\user01.MYSERVER01 のディレクトリ

2016/09/08  13:15    <DIR>      .
2016/09/08  13:15    <DIR>      ..
2013/08/23  00:39    <DIR>      Desktop
2016/09/08  13:15    <DIR>      Documents
……(中略)……
2013/08/23  00:39    <DIR>      Videos
          0 個のファイル                   0 バイト
         11 個のディレクトリ  57,389,125,632 バイトの空き領域

C:\Users\user01.MYSERVER01>exit ……リモートからログオフする

ホストとの接続が切断されました。 ……相手側が先にクローズすると、このようなメッセージが表示される

C:\> ……ローカルのコマンドプロンプト表示



ポート番号を指定してTelnetで接続する

 Telnetは、標準ではTelnetサーバ(TCPの23番)のポートへ接続するようになっている。だが、オプションで指定すれば、これを変更できる。例えばWebサーバなら80番、SMTPサービスなら25番、POPサービスなら110番などがよく使われるポート番号である(いずれも暗号化なしの場合)。

 これらのサービスでは、主にテキストによってコマンドやその応答をやりとりしているので、Telnetコマンドで接続して、容易にそのサービスをチェックしたり、トラブルシューティングなどを行ったりすることができる(ただしSSL/TLSやSSHなどで暗号化されている通信は、Telnetでは対処できない)。

 Telnetで接続するポート番号を変更するには、以下のように、ホスト名に続けてポート番号を指定する。

C:\>telnet <ホスト名> <ポート番号>
例:
telnet server1 25 ……ポート番号を数値で指定する
telnet server1 smtp ……ポート番号をサービス名で指定する



 ポート番号は、数値で指定してもよいし、サービスを表す文字列で指定してもよい。実際のポート番号とサービス名の対応は「%windir%\system32\drivers\etc\services」ファイルに格納されている(UNIXやLinuxの/etc/servicesファイルに相当する)。

 例えばメール送信用のSMTPサーバに接続するには、次のようにする。

C:\>telnet mailserver smtp ……SMTPサーバへ接続してみる例
エスケープ文字は 'CTRL+]' です
220 ac60a8e47b4f ESMTP Exim 4.82 Ubuntu Thu, 08 Sep 2016 03:42:23 +0000  ……SMTPサーバからの応答(グリーティングメッセージ)
HELP ……ここで「HELP」コマンドを送信してみる
214-Commands supported: ……SMTPサーバからの応答
214 AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP ……このサーバでは、これらのコマンドがサポートされているという意味
QUIT ……「QUIT」コマンドで通信を終了させる
221 ac60a8e47b4f closing connection

ホストとの接続が切断されました。

C:\>



 接続直後に一瞬だけ表示される「エスケープ文字は 'CTRL+]' です」というメッセージは、Telnetクライアント自身が出力している文字列である(詳細は後述。実際にはすぐに画面が切り替わってしまうので、これを見る機会は少ないが)。

 その次の「220 〜〜」から先が実際のSTMPサーバからの応答である。この例のように、サーバ側から何らかのメッセージ(グリーティングメッセージ)が出力される場合もあるが、出力されないようなサービスもある(テキストでメッセージが出力されないようなサービスでは、Telnetで接続してもその後の操作ができないようなものが多い)。

入力した文字を直接表示させるには「ローカルエコー」を使う

 いったんサーバとの接続が確立すれば、後はキーボードからコマンドを入力すれば、それがそのままサーバへと送信される。そしてコマンドに対する応答がサーバ側から送り返されてくると、それがそのまま画面へと表示される。

 上の例では、SMTPサーバのコマンド一覧を表示させるために、「HELP」というコマンドを送っている。具体的には、キーボードから[H][E][L][P]の4文字(小文字でもよい)と[Enter]キーを押せばよい。するとSMTPサーバでサポートされているコマンド一覧が表示される。ただし、場合によっては自分が入力した文字は表示されず、サーバからのメッセージしか表示されないことがある。これではユーザーは手探りでコマンドを入力せねばならず、とても使いにくい。

 このようなTelnetクライアントの動きは、実は「仕様」である。Telnetクライアントを使う場合、ユーザーが文字を入力すると、その文字がすぐに画面に表示されるのが普通だ。だが実際には、その文字はTelnetのリモートのサーバ側に送られ、サーバ側からあらためてクライアント側へと送り返されて表示されている。このような機能を「リモートエコー」という。

Telnetクライアントのローカルエコーとリモートエコー Telnetクライアントのローカルエコーとリモートエコー
Telnetは、入力装置(キーボードなど)と出力装置(画面やプリンタ)を組み合わせた、仮想的な端末を実現するためのプロトコルである。入力された文字はTelnetサーバへ送られた後、それがまたTelnetクライアントへ送り返されてきて画面に表示される。これをリモートエコーという。だがTelnet以外のサーバアプリケーションに接続する場合は、リモート側からエコーバックされない。ローカルエコーを有効にしておくと、入力した文字がローカル側で表示されるので、入力内容を確認できる。

 だが一般的なサーバアプリケーションではリモートエコーをサポートしていないので、入力した文字を表示させたければ、ローカル側で入力した文字を自分自身で表示させる「ローカルエコー」モードを有効にするとよい。このためには、次ページで述べるTelnetのオプション設定機能を利用する。

       1|2 次のページへ

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。