Senden einer http-Anfrage über den SSH-Server

931
Rehan

Ich habe meine Daten auf einem SSH-Server und möchte die Daten über HTTP POST- und GET-Anfragen abfragen und abrufen. Ich habe versucht, dies mit der einfachen URL http://127.0.0.1:9200/_search zu tun ? aber es gibt mir eine leere Antwort. Was ist der richtige Weg, Anfragen über den ssh-Server über http zu senden? meine http post-Funktion sieht ungefähr so ​​aus:

function spatialsearch(coordinates_selected) { var coords = coordinates_selected.geometry.coordinates; console.log('c',JSON.stringify(coordinates_selected.geometry.coordinates)); var _url = 'http://127.0.0.1:9200/_search?';  var b = { "query": { "bool": { "must": { "match_all": {} }, "filter": { "geo_shape": { "metadata.o2r.spatial.geometry": { "shape": { "type": "polygon", "coordinates": coords  /* [ // [-22.0, 76.0], // [-27.0, 65.0], // [-57.0, 65.0], // [-59.0, 76.0], // [-22.0, 76.0] ]*/  }, "relation": "within" }}}}} };  console.log(b,'http sending request'); return $http.post(_url,b); } 

Ich habe SSH-Tunneling mit ssh -L9201 versucht: sshserver: 9200 r_chau02 @ sshserver, aber ich bekomme immer noch keine Antwort.

Update Ich habe den Port in meinem Code auf 9201 aktualisiert, aber das Ergebnis war immer noch das gleiche. Der Fehler in der Konsole lautet net :: ERR_EMPTY_RESPONSE, während das Terminal Kanal 3 generiert : Öffnen fehlgeschlagen: Verbindung fehlgeschlagen: Verbindung abgelehnt .

0
Das klingt nicht wirklich nach Sinn. SSH ist SSH und HTTP ist HTTP. Ich verstehe nicht wirklich, was Sie zu tun versuchen. Haben Sie einen Webserver, der die HTTP-Anfrage beantworten kann? Seth vor 6 Jahren 0
@Seth Ich habe einen Webserver, auf dem sich die Elasticsearch-Instanz und alle meine Daten befinden und auf den ich über SSH zugreifen kann. Jetzt habe ich eine HTTP-Abfrage erstellt, um diese Daten abzurufen, aber es wird eine fehlerhafte Anforderung zurückgegeben (400). Der Server ist nur ein normaler Server. hoffe das klärt die Verwirrung Rehan vor 6 Jahren 0

1 Antwort auf die Frage

0
mtak

Sie schauen in die richtige Richtung, mit einem kleinen Fehler. Die HTTP-Anforderung und der Weiterleitungsport stimmen nicht überein (9200 und 9201).

Sie können Ihren Code entweder für die Abfrage an Port 9201 aktualisieren oder den SSH-Tunnel folgendermaßen ändern:

ssh -L9201:127.0.0.1:9200 r_chau02@sshserver 

Dadurch wird ES auf localhost: 9200 verfügbar (vorausgesetzt, das Tunneln ist auf dem Server aktiviert und ES wartet auf die Adresse des SSH-Servers).

Ich habe versucht, den Port im Code zu ändern. es funktioniert nicht. Ich habe die Frage mit einigen Fehlern aktualisiert Rehan vor 6 Jahren 0
Es scheint, dass Ihr ES-Server nicht auf sshserver: 9200 hört. Ist es an eine bestimmte IP gebunden? mtak vor 6 Jahren 0
Ich verwende nur die Standardkonfigurationen von ES und denke, dass es durch Deafult an "127.0.0.1" gebunden ist, obwohl ich nicht sicher bin. wie soll ich es hören lassen? Rehan vor 6 Jahren 0
Du musst nicht. Ich habe meine Antwort mit einem SSH-Tunnel aktualisiert, der von localhost: 9201 auf Ihrem Client an 127.0.0.1:9200 auf dem Remote-Host weiterleitet. mtak vor 6 Jahren 0
Das hat gut funktioniert, aber es wäre toll, wenn ich ohne SSH-Tunneling darauf zugreifen könnte. Ich habe mich geändert, indem ich den Code in http: \\ sshserver: 9200. geändert habe, aber ich erhalte diesen Fehler `net :: ERR_CONNECTION_REFUSED`. Rehan vor 6 Jahren 0