отправка http-запроса через ssh-сервер

827
Rehan

У меня есть данные, хранящиеся на SSH-сервере, и я хочу запрашивать и получать данные через HTTP POST и GET-запросы. я пытался сделать это, используя простой URL-адрес http://127.0.0.1:9200/_search ? но это дает мне пустой ответ. Как правильно отправлять запросы через ssh сервер через http? моя функция http post выглядит примерно так:

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); } 

я пробовал SSH туннелирование, используя ssh -L9201: sshserver: 9200 r_chau02 @ sshserver, но я все еще не получаю никакого ответа.

обновить я обновил порт в моем коде до 9201, но результат все тот же. Ошибка в консоли: net :: ERR_EMPTY_RESPONSE, в то время как терминал генерирует канал 3: открытие не удалось: подключение не удалось: соединение отказано .

0
Это на самом деле не звучит так, как будто имеет смысл. SSH - это SSH, а HTTP - это HTTP. Я не совсем понимаю, что вы пытаетесь сделать. У вас есть веб-сервер, который сможет ответить на HTTP-запрос? Seth 7 лет назад 0
@ У меня есть веб-сервер, на котором находится экземплярasticsearch и все мои данные, и к которому я обращаюсь через SSH, и теперь я создал HTTP-запрос для получения этих данных, но он возвращает неверный запрос (400). Сервер просто обычный сервер. надеюсь, что это устранит путаницу Rehan 7 лет назад 0

1 ответ на вопрос

0
mtak

You are looking in the right direction, with a minor error. The HTTP request and forwarding port don't match (9200 and 9201).

You can either update your code to query on port 9201, or change the ssh tunnel to:

ssh -L9201:127.0.0.1:9200 r_chau02@sshserver 

This will make ES available on localhost:9200 (assuming tunneling is enabled on the server, and ES is listening on the sshserver address).

я попытался изменить порт в коде. это не работает. я обновил вопрос с некоторыми ошибками Rehan 7 лет назад 0
Похоже, ваш сервер ES не прослушивает sshserver: 9200. Это связано с конкретным IP? mtak 7 лет назад 0
я просто использую конфигурации ES по умолчанию и думаю, что по умолчанию это связано с "127.0.0.1", хотя я не уверен. как мне заставить его слушать? Rehan 7 лет назад 0
Вам не нужно. Я обновил свой ответ с помощью туннеля SSH, который пересылает данные с localhost: 9201 на вашем клиенте до 127.0.0.1:9200 на удаленном хосте. mtak 7 лет назад 0
это работало нормально, но было бы здорово, если бы я мог получить к нему доступ без туннелирования ssh. я пытаюсь изменить код на `http: \\ sshserver: 9200`, но получаю эту ошибку` net :: ERR_CONNECTION_REFUSED`. Rehan 7 лет назад 0

Похожие вопросы