telnetコマンドは、「telnet ホスト名 ポート番号」と打って、相手のそのポートにTCPでつながるかを確かめる道具です。Windowsでは最初は入っていないので、Telnetクライアントを有効にしてから使います。画面が切り替われば接続成功、「接続に失敗しました」なら届いていません。
この記事でわかること
- Windowsでtelnetを使えるようにする手順(画面・コマンド)
- telnetでポートが開いているかを確かめる書き方
- 真っ黒な画面・失敗・応答なしの結果の読み分け
- Ctrl+]での抜け方と、SMTPなどの手動確認
- Cisco機器からのtelnetと、telnetが無い環境での代わり
一次情報: Microsoft Learn「telnet」(参照)/Microsoft Learn「Enable-WindowsOptionalFeature」(参照)/RFC 854「Telnet Protocol Specification」(参照)/RFC 5321「Simple Mail Transfer Protocol」(参照)※2026年10月時点
telnetでのポート確認は、監視・運用の現場で毎日のように使う作業です。監視の仕事からインフラエンジニアへ進む道筋は、別の記事にまとめました。
telnetコマンドとは?ポートにつながるかを試す道具
telnetコマンドとは、相手の機器にTCPでつなぎ、文字をそのままやり取りするためのコマンドです。もとは遠隔ログインのための道具で、RFC 854で決められたTelnetは23番ポートを使います。
今の現場では、ログインよりも「このポートにつながるか」を確かめる目的で使われることがほとんどです。ポート番号を付けて打つと、23番以外のどのTCPのポートにも接続を試せます。
| 使い道 | 打ち方の例 | 今も使うか |
|---|---|---|
| ポートの疎通確認 | telnet 192.0.2.10 443 | よく使う |
| メールサーバーの応答確認 | telnet mail.example.com 25 | 切り分けで使う |
| ネットワーク機器へのログイン | telnet 192.0.2.1 | 古い機器だけ。今はSSHが基本 |
アドレスや名前は説明用の値です。Telnetの通信は暗号化されず、パスワードも読める形で流れます。ログインにはSSHを使い、telnetは「つながるかの確認」に限るのが今の使い分けです。
Windowsでtelnetを使えるようにする
Windows 10・11では、telnetは最初から入っていません。そのまま打つと「’telnet’ は、内部コマンドまたは外部コマンド…として認識されていません。」と表示されます。
Telnetクライアントを有効にする方法は、画面とコマンドの2通りです。
- コントロールパネルで「プログラムと機能」を開く
- 左の「Windowsの機能の有効化または無効化」を選ぶ
- 一覧の「Telnet クライアント」にチェックを入れてOKを押す
- 新しくコマンドプロンプトを開き直し、telnetと打って「Microsoft Telnet>」が出れば準備完了
コマンドで入れる場合は、管理者として開いたPowerShellかコマンドプロンプトで次のどちらかを打ちます。
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient (PowerShell)
dism /online /Enable-Feature /FeatureName:TelnetClient (コマンドプロンプト)
Linuxでは、Debian・Ubuntu系なら「sudo apt install telnet」、RHEL系なら「sudo dnf install telnet」で入れられます。
telnetでポートが開いているかを確かめる
書き方は「telnet 相手 ポート番号」です。Microsoftの資料どおり、ポート番号を省くとTCPの23番につなぎに行きます。
telnet 192.0.2.10 443
結果の読み分け
telnetは、成功したときほど何も表示されません。初めて使うと、ここで戸惑う人が多いところです。
| 画面の様子 | 意味 | 次にすること |
|---|---|---|
| 画面が真っ黒に切り替わり、カーソルが点滅 | 接続成功。ポートは開いている | Ctrl+]で抜ける |
| 「220 …」など1行の文字が出る | 接続成功。相手のソフトが名乗った | 名乗りの中身を読む |
| 「ホストへの接続を開けませんでした。…接続に失敗しました」 | つながらなかった | 拒否か応答なしかを区別する |
| 長く待たされた末に失敗 | 途中で捨てられている可能性が高い | ファイアウォールや経路を疑う |
Linuxのtelnetは、成功すると「Connected to 192.0.2.10.」と「Escape character is ‘^]’.」の2行を出します。失敗のときは「Connection refused」か、しばらく待ってからの時間切れです。
失敗の出方で、止まっている場所が変わる
- 起きていること
- 相手まで届いたが、そのポートで待っているソフトがいない
- Linuxの表示
- Connection refused
- 疑う場所
- サーバーのサービスが止まっている、番号の打ち間違い
- 起きていること
- 返事が来ない。途中で通信が捨てられている
- Linuxの表示
- Connection timed out
- 疑う場所
- ファイアウォール、経路、IPアドレスの誤り
図:すぐ失敗ならサーバー側、待たされて失敗なら途中の経路を先に見る
telnetの抜け方(Ctrl+])
接続が成功すると、telnetは打った文字をそのまま相手へ送り続けます。普通にexitと打っても抜けられないことが多いので、抜け方を先に覚えておきます。
- Ctrl+](Ctrlを押しながら「]」)を押す
- 「Microsoft Telnet>」のプロンプトに戻る
- quit(またはq)と打ってEnter
日本語キーボードでも、Ctrlと「む」のキーにある「]」の組み合わせです。Linuxでは「telnet>」に戻るので、同じくquitで終わります。
SMTPやHTTPを手で話して確かめる
telnetは打った文字をそのまま送るので、文字で会話するプロトコルなら、手で話しかけて応答を確かめられます。メールサーバーの切り分けでよく使う方法です。
telnet mail.example.com 25
220 mail.example.com ESMTP
EHLO client.example.com
250-mail.example.com
250 SIZE 52428800
QUIT
221 Bye
RFC 5321の決まりでは、接続するとサーバーが220で始まる挨拶を返します。EHLOには250、QUITには221が返り、そこで接続が閉じる流れです。220の挨拶が出れば、ネットワークもメールソフトも動いていると判断できます。
ただし、今のメールの送信は587番や465番で暗号化して行うのが一般的です。暗号化した通信の中身は、telnetでは読み書きできません。その場合はopenssl s_clientを使います。
Cisco機器からtelnetでポートを確かめる
ルーターやスイッチの上でも、telnetでポートへの接続を試せます。機器から先のサーバーまで届くかを、その機器の位置から確かめたいときに便利です。
Router# telnet 192.0.2.10 80
Trying 192.0.2.10, 80 ... Open
「Open」なら接続成功です。「% Connection refused by remote host」なら相手まで届いて拒否、「% Connection timed out; remote host not responding」なら返事がありません。抜けるときは、Ctrl+Shift+6を押してからxを押します。
機器のtelnetログインを止めておく
機器へのログインにtelnet(23番)を使える状態は、パスワードがそのまま流れる入口そのもの。line vtyで「transport input ssh」と設定すると、SSHだけを受け付けます。
Router(config)# line vty 0 4
Router(config-line)# transport input ssh
この設定でも、機器から外へ向けてtelnetでポートを試す使い方には影響しません。
telnetが使えないときの代わりのコマンド
telnetを入れられない会社のPCも多くあります。ポートの確認だけなら、最初から入っている別のコマンドで代わりがききます。
| 環境 | コマンド | 成功の目印 |
|---|---|---|
| Windows(PowerShell) | Test-NetConnection 192.0.2.10 -Port 443 | TcpTestSucceeded : True |
| Linux・Mac | nc -zv 192.0.2.10 443 | succeeded/open の表示 |
| Linux・Mac・Windows | curl -v telnet://192.0.2.10:443 | Connected to の行 |
Test-NetConnectionは、結果をTrue・Falseで返すので、記録に残すときにも読み違えません。対話で中身をやり取りしたいときはtelnet、つながるかだけならTest-NetConnectionやnc、と分けると手早く進みます。
よくある質問
「’telnet’ は…認識されていません」と出ます
Telnetクライアントが入っていません。「Windowsの機能の有効化または無効化」でTelnetクライアントにチェックを入れるか、管理者のPowerShellでEnable-WindowsOptionalFeature -Online -FeatureName TelnetClientを打ちます。入れた後は、コマンドプロンプトを開き直してください。
telnetで画面が真っ黒になったまま動きません
接続に成功しています。相手のポートが開いていて、こちらの入力を待っている状態です。確認が済んだら、Ctrl+]を押してからquitと打てば抜けられます。
telnetでUDPのポートは確かめられますか?
確かめられません。telnetはTCPでつなぐ道具です。DNS(53番)やSNMP(161番)などUDPのサービスは、nslookupなどそのサービス用のコマンドで応答を見て確かめます。
telnetとSSHの違いは何ですか?
どちらも遠隔ログインに使えますが、telnetは通信を暗号化せず、SSHは暗号化します。telnetは23番、SSHは22番が既定のポートです。ログインにはSSHを使い、telnetはポートの確認に使うのが今の使い分けです。
telnetを有効にしたままでも安全ですか?
Telnetクライアントは、こちらから外へつなぐための道具にすぎません。入れただけで外からの入口ができるわけではありません。外からの接続を受けるのは「Telnetサーバー」のほうで、これを動かすのは避けてください。
まとめ
- telnetは「telnet 相手 ポート番号」で、TCPのポートにつながるかを試す道具
- Windowsは最初は入っていない。機能の有効化かEnable-WindowsOptionalFeatureで入れる
- 真っ黒な画面や名乗りの1行は成功。すぐ失敗はサーバー側、待たされて失敗は途中の経路を疑う
- 抜けるときはCtrl+]→quit。Cisco機器ではCtrl+Shift+6→x
- ログインはSSHに任せ、ポートの確認だけならTest-NetConnectionやncでも代わりがきく
telnetでポートまで届くと分かったら、次はそのサーバーが正しく応答しているかを見る段階です。届かなかったときは、pingやtracertで途中の経路を順に確かめていくと、止まっている場所が絞れます。
ポートの確認や切り分けを自分でこなせる力は、SES常駐から一段上の職場へ移るときに評価されます。SESから抜け出す転職の進め方を、段階ごとに整理した記事です。
免責事項
※本記事はRFC・Microsoftの公式ドキュメントなどの公開情報をもとに整理したものです。コマンドの表示や挙動は、OSや機器のバージョン・環境によって変わる場合があります。会社のPCや業務の機器では、所属先のルールと各製品の最新資料をあわせてご確認ください。

