Transfert de port SSH

8

Je souhaite me connecter à mon ordinateur (local) derrière NAT via un serveur accessible au public (public).

Sur local:

ssh -g -R 8000:localhost:22 user@public

Puis en public:

ssh -p 8000 user@public 

Mais je reçois error: Connection refused.

Lorsque je me connecte au serveur public, je peux vérifier que le tunnel fonctionne en:

ssh -p 8000 localhost

Ce qui ouvre ssh sur l'ordinateur local.

Suis-je soupçonnant quelque chose de mal que le serveur public devrait agir en tant que proxy transparent? Ou comment le faire fonctionner comme ça.

mito
la source

Réponses:

11

Les ports distants SSH en avant seront liés par défaut à localhost / loopback pour des raisons de sécurité. Il n'est pas souvent préférable d'autoriser d'autres hôtes à accéder à vos ports redirigés.

Pour remplacer ce comportement, vous devrez faire deux choses:

  • Activez l' GatewayPortsoption sur le serveur.
  • Spécifiez une adresse de liaison, ou *à lier à toutes les adresses, sur le client.

    ssh -R \*:8000:localhost:22 user@public
    

Échappez à l'astérisque pour vous assurer que votre coque ne le développe pas.

Dan Carley
la source
0

Cela ressemble plus à un problème avec les paramètres sur l'ordinateur public distant. Par défaut, openssh sshd (qui, je suppose, est celui utilisé), le paramètre GatewayPorts est devenu no, ce qui oblige la redirection de port à distance à n'écouter que sur localhost.

La solution serait alors de modifier votre / etc / ssh / sshd_config (ou équivalent), en définissant GatewayPorts sur oui ou sur spécifié par le client. Si vous choisissez la dernière, vous devrez remplacer votre demande de tunnel par quelque chose comme -R *: 8000: localhost: 22 à la place.

andol
la source