telnet www.ietf.org 80
GET /rfc.html HTTP/1.1
Host: www.ietf.org
このコマンドシーケンスは、IETF Webサーバーwww.ietf.orgのポート80へのTelnet(つまりTCP)接続を開始します。次に、URLパスとプロトコルの名前を指定するGETコマンドが表示されます。目的のサーバーとURLを試してください。次の行は必須ホストヘッダーです。
ssh
代わりに、次のようなものを使用できます。telnet
ssh www.ietf.org 80 GET /rfc.html HTTP/1.1 Host: www.ietf.org
?
何その他のプログラム上記の例ではなく、ローカルホストからリモートhttpサーバーへの接続を確立してhttpリクエストをhttpサーバーに送信し、http応答を受信できます
ssh
か?telnet
何プログラムタイプ
telent
上記の例のものを代わりに使用できますか?
ありがとうございます。
答え1
ssh
SSHクライアントは、サーバーホストキーの確認を続行する前にサーバーがいくつかのバナーを待つため、使用できません。 SSHプロトコルはHTTPとは何の関係もありません。
$ telnet localhost 222
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.0
telnet
ソケットにプレーンテキストメッセージを書き込むことができるため、Webサーバーでクエリを使用できます。
別の一般的な「汎用」TCP(およびUDP)クライアント(およびサーバー)は次のとおりですnc
。
$ nc localhost 222
SSH-2.0-OpenSSH_7.0
$ nc webserver 80
GET /
<?xml version="1.0" encoding="UTF-8"?>
[...]
更新、返信Telnet は http とは異なるプロトコルですが、なぜ telnet では http を使用できますが、ssh では使用できません。
クライアントはtelnet
プロトコルに拘束されません。 TCPサーバーに接続した後、読み取り/書き込みが可能です。
HTTPはプレーンテキストメッセージに基づくプロトコルであり、telnet
HTTPクエリを使用したり簡単に偽造したりできますnc
。
返信するSSHクライアントがサーバーホストキーの確認を進める前に待機する「サーバーのバナー」とは何ですか?
SSH クライアントはプロトコルに拘束されません。 TCPサーバーとのセッションの確立後にSSHクライアントが最初に行うことは、OpenSSHサーバーのバージョンを識別するバナーメッセージを待つことです。その後、ホストキーを確認して最後に認証すると、シェルが開きます。 SSH クライアントは、SSH サーバーへの接続にのみ関連します。
答え2
SSHを使用してWebサーバーに接続し、httpリクエストを送信してhttpレスポンスを受信できますか?
いいえ。 SSHはSSHよりも複雑なプロトコルですtelnet
。
telnet
ただ文字契約文字要求を送信し、文字応答を受け取ります。暗号化は必要ありません。これはHTTP(単純な要求と応答メッセージを含むテキストプロトコル)と共通しているため、これを使用してtelnet
HTTP応答を取得できます。- SSHはバイナリプロトコルです。また、プロトコルは
ssh
バイナリに接続されているため、気にする必要はありません(telnet
認証に特別なコマンドを使用する必要がある場合とは異なり)。
バナーを読むことはできますが、鍵交換が始まり、後で何が起こっているのかを理解するために何らかの方法で復号化する必要がある暗号化されたパケットを取得します(そして暗号化されたパケットを送信して回答を得ます)。
telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2
SSH-2.0-OpenSSH_7.2p2
�\��դ`� !�����[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1Assh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,[email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]�[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1�[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1none,[email protected],[email protected]
もう一つのプログラムが...
すでに述べたように、netcat
これはネイティブHTTPリクエストを作成したい場合の良い例です。そうでない場合は、ブラウザの開発者ツールを使用するか、単に使用して同じwget
。curl
追加の質問に答えてください:
(1)Telnetもhttpとは異なるプロトコルですが、なぜTelnetではhttpを使用できますが、sshでは使用できませんか?
そうではない「Telnet経由のhttp」。それでもHTTPプロトコルを使用しますが、telnet
ツールも使用します。送信できる完全に無制限のテキストプロトコルです。何もないそれを書く。
(2) SSH クライアントがサーバホストキーの確認を進める前に待機する「サーババナー」とは何ですか?
サーバーが待っています「クライアントのバナー」、公務員クライアント識別文字列で説明されているようにRFC4253SSHトランスポート層について説明します。サーバーのホスト鍵検証を実行する前にいくつかの手順がありますが、デフォルトでは鍵交換(上記の最初のメッセージ)です。