Memo

メモ > サーバ > 各論: ネットワーク > 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

Advertisement