SSHを使用してWebサーバーに接続し、httpリクエストを送信してhttpレスポンスを受信できますか?

SSHを使用してWebサーバーに接続し、httpリクエストを送信してhttpレスポンスを受信できますか?
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を試してください。次の行は必須ホストヘッダーです。

  1. ssh代わりに、次のようなものを使用できます。telnet

    ssh www.ietf.org 80
    GET /rfc.html HTTP/1.1
    Host: www.ietf.org
    

  2. その他のプログラム上記の例ではなく、ローカルホストからリモートhttpサーバーへの接続を確立してhttpリクエストをhttpサーバーに送信し、http応答を受信できますsshか?telnet

    プログラムタイプtelent上記の例のものを代わりに使用できますか?

ありがとうございます。

ベストアンサー1

sshSSHクライアントは、サーバーホストキーの確認を続行する前にサーバーがいくつかのバナーを待つため、使用できません。 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はプレーンテキストメッセージに基づくプロトコルであり、telnetHTTPクエリを使用したり簡単に偽造したりできますnc

返信するSSHクライアントがサーバーホストキーの確認を進める前に待機する「サーバーのバナー」とは何ですか?

SSH クライアントはプロトコルに拘束されません。 TCPサーバーとのセッションの確立後にSSHクライアントが最初に行うことは、OpenSSHサーバーのバージョンを識別するバナーメッセージを待つことです。その後、ホストキーを確認して最後に認証すると、シェルが開きます。 SSH クライアントは、SSH サーバーへの接続にのみ関連します。

おすすめ記事