J'ai un serveur non root avec une adresse IP publique qui accepte uniquement les requêtes HTTP (pas seulement une restriction de port) et deux ordinateurs locaux avec une adresse IP privée sur des réseaux différents. J'aimerais établir une connexion SSH entre ces ordinateurs locaux, probablement via le serveur.
Y a-t-il un moyen de faire cela sans réécrire le client / serveur SSH?
networking
ssh
http
ssh-tunnel
andrew
la source
la source
Vous pourriez être intéressé par Tunneling HTTP .
Voir Puis-je tunneler un autre protocole via un proxy HTTP?
la source
J'ai réussi à le faire même sans serveur HTTP (au sens strict):
tout ce que j’utilisais était node.js sur les deux côtés du client (un client ssh, un serveur ssh) ainsi que firebase pour stocker les tampons (convertis en chaînes) lus à partir du flux TCP et sous l’instruction générale de la réponse / commentaires de @ Putnik en gardant à l'esprit d'utiliser le
allowHalfOpen
option), le programme fonctionne avec peu de retard. Graphiquement, la connexion ressemble à ceci:client1 (client ssh) & lt; = = gt; localhost1 (tcp, serveur fake-ssh)
client2 (serveur ssh) & lt; = = gt; localhost2 (tcp, fake-ssh client (s))
localhost1 & lt; => gt; firebase (ou un vrai serveur HTTP) & lt; = = gt; localhost2
Veuillez noter que des hôtes locaux aux serveurs Firebase / Server, on peut encoder / décoder les tampons comme on le souhaite - à condition qu'il s'agisse d'une paire de conversions sans perte. Par conséquent, le lien vers l’autre question de la réponse de @ RedGrittyBrick (en utilisant
HTTP CONNECT
) devrait également fonctionner à condition que le privilège sur ce serveur soit suffisant et potentiellement plus rapide.Bien sûr, il y a beaucoup de choses dans le code qui peuvent être améliorées, mais je pense qu'en termes de sécurité, cela ne devrait pas être moins sécurisé qu'une connexion directe utilisant openSSH. Corrigez-moi si j'ai tort, s'il-vous plait.
la source