La commande permettant de transférer le port 80 de votre ordinateur local ( localhost
) vers l'hôte distant sur le port 8000 est la suivante:
ssh -R 8000:localhost:80 oli@remote-machine
Cela nécessite un tweak supplémentaire sur le serveur SSH, ajoutez les lignes à /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
Ensuite, rechargez la configuration en exécutant le serveur sudo reload ssh
.
Ce paramètre GatewayPorts yes
force SSH à lier le port 8000 à l'adresse générique, de sorte qu'il devient disponible à l'adresse publique de remote-machine
( remote-machine:8000
).
Si vous avez besoin de ne pas tout lier à l'adresse générique, remplacez- GatewayPorts yes
le GatewayPorts clientspecified
. Étant donné que les ssh
liens à l'adresse de bouclage sont activés par défaut, vous devez spécifier un vide bind_address
pour lier l'adresse générique:
ssh -R :8000:localhost:80 oli@remote-machine
L' :
avant 8000
est obligatoire si GatewayPorts
est défini sur clientspecified
et que vous souhaitez autoriser l'accès public à remote-machine:8000
.
Extraits manuels pertinents:
ssh (1)
-R [bind_address:] port: host: hostport
Spécifie que le port donné sur l'hôte distant (serveur) doit être transféré à l'hôte donné et au port côté local. Cela fonctionne en allouant un socket pour écouter le port du côté distant, et chaque fois qu'une connexion est établie à ce port, la connexion est transférée sur le canal sécurisé et une connexion est établie pour héberger le port hostport de la machine locale. Par défaut, le socket d'écoute sur le serveur sera uniquement lié à l'interface de bouclage. Cela peut être annulé en spécifiant une bind_address. Une bind_address vide, ou l'adresse '*', indique que le socket distant doit écouter toutes les interfaces. La spécification d'une adresse bind unique à distance ne réussira que si l'option GatewayPorts du serveur est activée (voir sshd_config (5)).
sshd_config (5)
GatewayPorts
Spécifie si les hôtes distants sont autorisés à se connecter aux ports transférés pour le client. GatewayPorts peut être utilisé pour spécifier que sshd doit autoriser les redirections de ports distants à se lier à des adresses autres que le bouclage, permettant ainsi à d'autres hôtes de se connecter. L'argument peut être «non» pour forcer les transferts de port distants à être disponible pour l'hôte local uniquement, «oui» pour forcer les redirections de port distants à se lier à l'adresse générique, ou «client spécifié» pour permettre au client de sélectionner l'adresse à laquelle la transmission est liée. La valeur par défaut est "non".
Voir également:
GatewayPorts
était la balle magique ici. J'aime que vous ayez trouvé une version qui me permette de limiter cette technique assez puissante à certains utilisateurs.ssh
commande. Il configure si d'autres clients peuvent communiquer avec les ports transférés sur le serveur.-R :8000:127.0.1.1:80
(ou toute autre127.x.x.x
adresse). Sinon, vous ne pourrez pas connaître l'adresse IP distante.Si le serveur a
GatewayPorts no
, vous pouvez obtenir le même résultat en exécutantssh -g -L 8001:localhost:8000 oli@remote-machine
sur le serveur une fois que vous avez exécuté lassh -R
commande sur le client. Cela rendra le port de bouclage 8000 sur le serveur accessible sur toutes les interfaces du port 8001.la source