テルネット(Telnet)とは?SSHとの違い、ポート接続テストでの活用法

ログイン用としてはほとんど使われなくなりましたが、ポートが開いているか確認するツールとしては今も現役です。

テルネットとは - 最初の遠隔ターミナル接続プロトコル

1969年に登場したテルネットは、ネットワーク越しのコンピュータのコマンドライン(ターミナル)に接続し、まるで目の前で操作しているかのように扱えるプロトコルです。テルネット(Telnet)はインターネットの前身であるARPANETの時代から使われてきた非常に古いプロトコルで、ユーザーが入力したキー操作をそのままネットワーク越しのサーバーに送り、その結果の画面を送り返してもらう仕組みで遠隔ターミナル接続を実現します。今日広く使われているSSHの概念上の祖先といえる存在です。

デフォルトの23番ポートと動作の仕組み

テルネットは基本的にTCP 23番ポートを使用し、クライアントとサーバーが接続されると、以降のすべての入出力がその接続を通じてやり取りされます。テルネットクライアントがサーバーの23番ポートにTCP接続を確立すると、以後ユーザーがキーボードで入力する内容はすべてリアルタイムでサーバーに送信され、サーバーの応答(画面出力)がそのままクライアントに返されます。ログイン手順やコマンドの実行結果など、すべてがこの一本のテキストストリームを通じてやり取りされます。

なぜSSHに置き換わったのか - 平文送信のセキュリティ問題

テルネットはログインパスワードを含むすべてのデータを暗号化せず平文でやり取りするため、通信経路の途中でそのまま盗み見られる可能性があります。テルネットが設計された時代はネットワーク盗聴への配慮がほとんどなかったため、ユーザーIDやパスワードまで含むすべてのデータが暗号化なしで送信されます。同じネットワーク上の攻撃者がパケットキャプチャツールだけでログイン情報をそのまま盗み見られることが知られるようになり、1990年代後半からは通信全体を暗号化するSSH(セキュアシェル)が遠隔接続の標準として定着しました。

それでも今も使われる理由 - ポート接続テストツールとして

セキュアな接続用としては引退しましたが、特定のポートが開いているかを素早く確認する簡易診断ツールとしては今も広く使われています。実際のログイン用途でテルネットを使うことはほとんどなくなりましたが、「telnet サーバーアドレス ポート番号」というコマンドで、そのポートへのTCP接続が成功するかだけを素早く確認する用途では今も広く使われています。接続に成功すればそのポートは開いておりファイアウォールにも塞がれていないという意味になり、接続が拒否されたり応答がなかったりする場合はポートが閉じているか経路のどこかが塞がれているサインと解釈できます。

Windowsでtelnetコマンドを有効にする方法

最近のWindowsではテルネットクライアントが標準では無効になっており、「Windowsの機能の有効化または無効化」から自分で有効にしないとコマンドが使えません。コントロールパネルの「プログラムと機能」から「Windowsの機能の有効化または無効化」を開き、一覧から「Telnet Client」にチェックを入れてOKを押すとインストールが始まります。インストールが完了すれば、コマンドプロンプトやPowerShellですぐにtelnetコマンドを使えます。MacやLinuxはほとんどの場合telnetコマンドが標準で含まれているか、パッケージ管理ツールで簡単にインストールできます。

実務でtelnetを使ってポートの開閉を確認する例

メールサーバーの25番ポートやWebサーバーの80番ポートのように、特定のサービスが正常に開いているかを素早く確認する際によく活用されます。例えば「telnet mail.example.com 25」と入力して接続に成功し、サーバーの挨拶メッセージ(バナー)が表示されれば、そのメールサーバーのSMTPポートが正常に開いていることを意味します。反対に「接続できません」というメッセージが出た場合は、ファイアウォールが塞いでいるかサービス自体が停止している可能性を確認する必要があります。ただしあくまで接続確認用にとどめ、実際のログインやデータ送信には絶対に使わないようにしましょう。

SSHの仕組みがもっと気になる方へ

SSHは公開鍵暗号を使ってセッション全体を暗号化することでテルネットに取って代わりました。そのため通信を傍受されても、ログイン情報など内容を読み取ることはできません。パスワードだけでなく鍵ベースの認証にも対応しているため、遠隔サーバーを安全に管理するための標準として定着しました。

ポート番号全般についてもっと知りたい方へ

23番ポート以外にも、Webトラフィック用の80番、送信メール用の25番のように、多くのポート番号が慣習的に特定のサービスに割り当てられています。代表的なものをいくつか把握しておくと、ここで紹介したようなポートテストを含め、ネットワークのトラブルシューティングがぐっとやりやすくなります。

よくある質問

今でもテルネットでログインしてサーバーを管理してもいいですか?

おすすめしません。テルネットはログイン情報を含むすべての通信を暗号化せず平文で送信するため、同じネットワーク上の誰かがパケットを傍受すればアカウント情報がそのまま漏れてしまう可能性があります。遠隔サーバーの管理には必ずSSHを使いましょう。

telnetコマンドでポートテストをしたら接続がすぐに切れました。

接続直後にすぐ切れる場合、ポート自体は開いているものの、テルネットプロトコル自体を理解しないサービス(Webサーバーやメールサーバーなど)である可能性が高いです。この場合でも「接続自体は成功した」という点で、そのポートが開いていることは確認できています。