envoi d'une requête http sur un serveur ssh

0

J'ai mes données résidant sur un serveur SSH et je veux demander et récupérer les données via des requêtes HTTP POST et GET. J'ai essayé de le faire en utilisant http://127.0.0.1:9200/_search de l'URL simple ? mais cela me donne une réponse vide. Quelle est la bonne façon d’envoyer des demandes sur un serveur ssh via http? ma fonction de publication http ressemble à ceci:

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

J'ai essayé le tunneling SSH avec ssh -L9201: sshserver: 9200 r_chau02 @ sshserver mais je ne reçois toujours pas de réponse.

mise à jour j'ai mis à jour le port dans mon code à 9201 mais le résultat était toujours le même. L'erreur dans la console est net :: ERR_EMPTY_RESPONSE pendant que le terminal génère le canal 3: échec de l'ouverture: échec de la connexion: connexion refusée .

Rehan
la source
Cela ne semble pas vraiment avoir du sens. SSH est SSH et HTTP est HTTP. Je ne comprends pas vraiment ce que vous essayez de faire. Avez-vous un serveur Web capable de répondre à la requête HTTP?
Seth
@Seth, j'ai un serveur Web sur lequel l'instance elasticsearch et toutes mes données résident et auquel j'accède via SSH et maintenant j'ai créé une requête HTTP pour récupérer ces données, mais elle renvoie une requête incorrecte (400). Le serveur est juste un serveur normal. J'espère que cela dissipera toute confusion
Rehan,

Réponses:

0

Vous regardez dans la bonne direction, avec une erreur mineure. La requête HTTP et le port de transfert ne correspondent pas (9200 et 9201).

Vous pouvez mettre à jour votre code pour interroger sur le port 9201 ou modifier le tunnel ssh en:

ssh -L9201:127.0.0.1:9200 r_chau02@sshserver

Cela rendra ES disponible sur localhost: 9200 (en supposant que le tunneling est activé sur le serveur et que ES écoute sur l'adresse sshserver).

mtak
la source
J'ai essayé de changer le port en code. ça ne marche pas. J'ai mis à jour la question avec quelques erreurs
Rehan
Il semble que votre serveur ES n’écoute pas sur sshserver: 9200. Est-ce lié à une adresse IP spécifique?
mardi
J'utilise simplement les configurations par défaut d'ES et je pense que par défaut, il est lié à "127.0.0.1" bien que je ne sois pas sûr. Comment dois-je le faire écouter?
Rehan
Tu n'es pas obligé. J'ai mis à jour ma réponse avec un tunnel SSH qui transfère de localhost: 9201 sur votre client à 127.0.0.1:9200 sur l'hôte distant.
mardi
cela a bien fonctionné, mais ce serait formidable si je pouvais y accéder sans ssh tunneling. je treid en me changeant le code à http:\\sshserver:9200. mais je recieving cette erreur net::ERR_CONNECTION_REFUSED.
Rehan