SSH를 사용하여 웹 서버에 연결한 다음 http 요청을 보내고 http 응답을 받을 수 있나요?

SSH를 사용하여 웹 서버에 연결한 다음 http 요청을 보내고 http 응답을 받을 수 있나요?
telnet www.ietf.org 80
GET /rfc.html HTTP/1.1
Host: www.ietf.org

이 명령 시퀀스는 IETF 웹 서버 www.ietf.org의 포트 80에 대한 텔넷(즉, 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소켓에 일반 텍스트 메시지를 쓸 수 있으므로 웹 서버에 쿼리를 사용할 수 있습니다 .

또 다른 인기 있는 "범용" 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 서버에 연결하는 데에만 관련됩니다.

답변2

SSH를 사용하여 웹 서버에 연결한 다음 http 요청을 보내고 http 응답을 받을 수 있나요?

아니요. SSH는 SSH보다 더 복잡한 프로토콜입니다 telnet.

  • telnet오직문자 계약문자 요청을 보내고 문자 응답을 받습니다. 암호화가 필요하지 않습니다. 이는 HTTP(간단한 요청 및 응답 메시지가 포함된 텍스트 프로토콜)와 공통점이 많으므로 이를 사용하여 telnetHTTP 응답을 얻을 수 있습니다.
  • 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를 통해서는 사용할 수 없습니까?

그렇지 않다"텔넷을 통한 http". 여전히 HTTP 프로토콜을 사용하지만 telnet도구도 사용합니다. 보낼 수 있는 완전히 무제한의 텍스트 프로토콜입니다.아무것그것을 써.

(2) SSH 클라이언트가 서버 호스트 키 확인을 진행하기 전에 기다리는 "서버 배너"는 무엇입니까?

서버가 기다리고 있습니다"클라이언트의 배너",공무상클라이언트 식별 문자열에 설명된 대로RFC4253SSH 전송 계층을 설명합니다. 서버 호스트 키 확인을 수행하기 전에 여러 단계가 있지만 기본적으로 키 교환(위에 표시된 첫 번째 메시지)입니다.

관련 정보