メモ > サーバ > 各論: ネットワーク > telnetでアクセスする
■telnetでアクセスする
ネットワーク関連のデバッグなどに、telnetを使うと原因究明しやすいことがある
(SSH登場前は、telnetを使ってリモートサーバにログインすることが一般的だった
ただし現在はあくまでもデバッグ目的の利用とし、リモートサーバの操作はデータが暗号化されるSSHを使うことを推奨)
telnetの基本的な使い方は、以下のページが詳しい
WindowsのTelnetクライアントの使い方
http://www.atmarkit.co.jp/ait/articles/0207/06/news002.html
■インストールと接続方法
Unixの場合ははじめからインストール済みになっているかもしれないが、
使えない場合は以下でインストールする
以下はVagrantのCentOS7にtelnetをインストールする例
# yum -y install telnet
telnetコマンドで、接続先とポートを指定できる(ポートを指定しなければ、デフォルトの23番に接続する)
$ telnet 153.121.33.84 22
Trying 153.121.33.84...
ポートが空いていなければ、このまま何も反応がない。Ctrl+Cで終了する
そのポートで何も待ち受けしていない場合、以下のように接続拒否のエラーになる
telnet: connect to address 153.121.33.84: Connection refused
telnetでログインしてサーバを操作したい場合、あらかじめ対象サーバにtelnetサーバをインストールする必要がある
ただしtelnetは通信が暗号化されないため、「一時的にSSHサーバを削除する」のような場合を除いて使わないことを推奨
■接続の終了
Ctrl + ] を押すとtelnetのプロンプトが表示される
その状態で q を入力するとtelnetが終了する
[linux] telnetで相手の切断を待たずに終了する方法 - Qiita
https://qiita.com/suzutsuki0220/items/9cac0bfa4a0ca26e1588
■接続の具体例(SSH)
$ telnet 153.121.33.84 22 … SSHのポートに接続
Trying 153.121.33.84...
SSH-2.0-OpenSSH_5.3 … ENTERを入力
Protocol mismatch. … プロトコルが異なるので操作はできない
> quit … 接続終了
SSHサーバー構築(OpenSSH) - CentOSで自宅サーバー構築
http://centossrv.com/openssh.shtml
■接続の具体例(HTTP)
$ telnet refirio.net 80 … HTTPのポートに接続
Trying 153.121.33.84...
Connected to 153.121.33.84.
Escape character is '^]'.
GET / HTTP/1.0 … コマンドを入力後、さらに改行を2回入力
HTTP/1.1 200 OK
Date: Sat, 21 Oct 2017 07:44:19 GMT
Server: Apache
X-Powered-By: PHP/5.3.3
Set-Cookie: PHPSESSID=1g9vhqhjrg75q40ti2an6ceci4; path=/
Content-Length: 413
Connection: close
Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>refirio.net</title>
<link rel="stylesheet" href="/css/common.css" />
<link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon" />
<script type="text/javascript" src="/js/analytics.js"></script>
</head>
<body>
<h1>refirio.net</h1>
<p>テストページ。</p>
<address>Created by refirio.</address>
</body>
</html>
Connection closed by foreign host.
■接続の具体例(SMTP)
$ telnet 153.121.33.84 587 … 153.121.33.84 サーバの 587 ポートに接続
Trying 153.121.33.84...
Connected to 153.121.33.84.
Escape character is '^]'.
220 mail.refirio.net ESMTP unknown
EHLO localhost.localdomain … クライアントのホスト名を名乗る
250-mail.refirio.net
250-PIPELINING
250-SIZE 31457280
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN … ログインを行う
334 VXNlcm5hbWU6
aW5mb0ByZWZpcmlvLm5ldA== … ユーザ名(Base64エンコードしたもの)を入力
334 UGFzc3dvcmQ6
YWJjZDEyMzQ= … パスワード(Base64エンコードしたもの)を入力
235 2.7.0 Authentication successful
MAIL FROM: info@refirio.net … メール送信元を設定
250 2.1.0 Ok
RCPT TO: test@example.com … メール送信先を設定
250 2.1.5 Ok
DATA … メールデータの送信を開始
354 End data with <CR><LF>.<CR><LF>
From: info@refirio.net … メール送信元
To: test@example.com … メール送信先
Subject: Test … 件名
… カラEnterを入力
Hello World! … メール本文
. … ピリオドを入力
250 2.0.0 Ok: queued as 747E92780ABD
QUIT … 接続終了
221 2.0.0 Bye
Connection closed by foreign host.
以下のように、送信先のアドレスにメールが届けば成功
From: info@refirio.net
To: test@example.com
件名: Test
本文: Hello World!
また /var/log/maillog にメールログが記録されているので、エラーなどが記録されていないか確認しておく
SMTP認証 - bnote
https://www.bnote.net/dataroom/smtp_auth.html
Base64 エンコード・デコード:画像などのデータをBase64文字列に変換、逆変換 | ラッコツールズ
https://rakko.tools/tools/24/
■接続の具体例(TRACEメソッドが使えるサーバ)
$ telnet 153.121.33.84 80 … 入力してENTER
Trying 153.121.33.84...
Connected to 153.121.33.84.
Escape character is '^]'.
TRACE / HTTP/1.1 … 入力してENTER
HOST: example.com … 入力してENTER
… そのままENTER
HTTP/1.1 200 OK
Date: Mon, 17 Oct 2022 04:02:07 GMT
Server: Apache
Transfer-Encoding: chunked
Content-Type: message/http
25
TRACE / HTTP/1.1 … 入力した結果がそのまま表示されれば、TRACEメソッドが利用できたということ
HOST: example.com … 入力した結果がそのまま表示されれば、TRACEメソッドが利用できたということ
0
^] … Ctrl + ] を入力
telnet> q … プロンプトが表示されるので、q を入力してENTER
Connection closed.
■接続の具体例(TRACEメソッドを禁止したサーバ)
$ telnet 153.121.33.84 80
Trying 153.121.33.84...
Connected to 153.121.33.84.
Escape character is '^]'.
TRACE / HTTP/1.1 … 入力してENTER
HOST: example.com … 入力してENTER
… そのままENTER
HTTP/1.1 405 Method Not Allowed … 405エラーが返される
Date: Mon, 17 Oct 2022 05:12:50 GMT
Server: Apache
Allow:
Content-Length: 223
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method TRACE is not allowed for the URL /.</p>
</body></html>
^]
telnet> q
Connection closed.
■telnetコマンドの代替(curlコマンドでの接続)
curl で telnet を代替する - 理系学生日記
https://kiririmode.hatenablog.jp/entry/20200405/1586070744
curlでtelnetを指定すれば、80番ポートに接続した結果を取得できる
$ curl telnet://www.example.com:80
GET / HTTP/1.0 … このまま入力してENTER
Host: www.example.com … このまま入力してENTER
… 何も入力せずにENTER
… 何も入力せずにENTER
HTTP/1.0 200 OK
Accept-Ranges: bytes
Age: 27939
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Wed, 06 Sep 2023 09:17:03 GMT
Etag: "3147526947"
Expires: Wed, 13 Sep 2023 09:17:03 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (laa/7B8E)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
Connection: close
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
〜中略〜
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
■telnetコマンドの代替(opensslコマンドでの接続)
Telnetコマンドの替わりにOpenSSLを使う方法 | TECH+(テックプラス)
https://news.mynavi.jp/techplus/article/20210519-1890523/
telnetでhttp、opensslでhttpsをテストしてみる - Qiita
https://qiita.com/POCH-7003/items/d3ab76151559260f3691
opensslでs_clientを指定すれば、443番ポートに接続した結果を取得できる
$ openssl s_client -connect www.example.com:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert TLS RSA SHA256 2020 CA1
verify return:1
depth=0 C = US, ST = California, L = Los Angeles, O = Internet\C2\A0Corporation\C2\A0for\C2\A0Assigned\C2\A0Names\C2\A0and\C2\A0Numbers, CN = www.example.org
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Los Angeles/O=Internet\xC2\xA0Corporation\xC2\xA0for\xC2\xA0Assigned\xC2\xA0Names\xC2\xA0and\xC2\xA0Numbers/CN=www.example.org
i:/C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1
1 s:/C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIHSjCCBjKgAwIBAgIQDB/LGEUYx+OGZ0EjbWtz8TANBgkqhkiG9w0BAQsFADBP
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE
aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMzAxMTMwMDAwMDBa
〜中略〜
Ik3Lg2c6k78rxcWcGvJDoSU7hPb3U26oha7eFHSRMAYN8gfUxAi6Q2TF4j/arMVB
r6Q36EJ2dPcTu0p9NlmBm8dE34lzuTNC6GDCTWFdEloQ9u//M4kUUOjWn8a5XCs1
263t3Ta2JfKViqxpP5r+GvgVKG3qGFrC0mIYr0B4tfpeCY9T+cz4I6GDMSP0xg==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Los Angeles/O=Internet\xC2\xA0Corporation\xC2\xA0for\xC2\xA0Assigned\xC2\xA0Names\xC2\xA0and\xC2\xA0Numbers/CN=www.example.org
issuer=/C=US/O=DigiCert Inc/CN=DigiCert TLS RSA SHA256 2020 CA1
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3745 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 6C6B76D1B0C3BA0B1F0959188E33470E85C8E0FAE5C7890AB961CC9BB19B0EA7
Session-ID-ctx:
Master-Key: CD8E0BB25FC007F3AC38E10FE43012BC948218C61D4BA8DB2D54336003E0E67B0534E6B26C4DB2B3AFB210E8BD7FB978
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 7200 (seconds)
TLS session ticket:
0000 - a7 d2 df 3b 7d 8e 7d fe-5b 00 cd fd 69 a0 cd c4 ...;}.}.[...i...
0010 - ac 3e 09 c5 38 56 ea bc-8d 9d 78 e4 da 27 bc 5f .>..8V....x..'._
0020 - d1 78 65 eb 48 2f eb 34-64 5d 3a 55 01 a9 8f 0a .xe.H/.4d]:U....
0030 - 36 7c 1a 80 b5 9c 48 59-09 76 5c 7d 71 ba 09 d8 6|....HY.v\}q...
0040 - ac 5a 88 31 57 12 00 2c-59 ff ba ed 22 90 35 34 .Z.1W..,Y...".54
0050 - 31 b0 81 d9 79 4b 2d 92-67 a0 43 cd 0f 9c 2f 00 1...yK-.g.C.../.
0060 - ae 27 39 a7 c6 66 b7 4f-e8 bf 63 10 eb d8 b4 ef .'9..f.O..c.....
0070 - ee 4b c4 c3 bf 6d 9f c6-db 94 07 3f 80 df fa 2f .K...m.....?.../
0080 - 80 8c ee cb 5e bd 62 4f-27 35 e3 da f9 40 4d af ....^.bO'5...@M.
0090 - 4f a0 b3 af d3 a2 49 cb-d7 5e 8d 59 8d c7 d9 b2 O.....I..^.Y....
Start Time: 1693991261
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
GET / HTTP/1.0 … このまま入力してENTER
Host: www.example.com … このまま入力してENTER
… 何も入力せずにENTER
HTTP/1.0 200 OK
Age: 27376
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Wed, 06 Sep 2023 09:07:51 GMT
Etag: "3147526947+ident"
Expires: Wed, 13 Sep 2023 09:07:51 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (sec/976A)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
Connection: close
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
〜中略〜
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
closed