Question: Pourquoi ssh -N -R 2222:localhost:22 <bluehost_user>@<bluehost_ip>
entraîne-t-il l'erreur "Echec de la redirection de port distant pour le port d'écoute"? L'objectif est d'établir un tunnel inverse avec une redirection de port afin de ssh de manière cohérente dans un hôte derrière un routeur NAT avec une adresse IP privée dynamique. Voir l'image pour plus de détails.
déjà essayé:
Reverse SSH Tunnel
Mettre à jour
J'essayais la commande suivante pour l'étape 2: reduser@redhost:~ ssh greenuser@greenhost -p 2222
Ce devrait être: reduser@redhost:~ ssh greenuser@bluehost -p 2222
Vous voulez utiliser les informations d'identification greenuser sur l'IP bluehost car l'hôte auquel vous vous connectez lorsque vous utilisez le port 2222 est vraiment le greenhost.
Pourquoi
ssh -N -R 2222:localhost:22 <bluehost_user>@<bluehost_ip>
entraîne-t-il l'erreur "Echec de la redirection de port distant pour le port d'écoute"?
Je reçois cet avertissement lorsque j'essaie d'utiliser un port déjà utilisé du côté distant.
La sortie de netstat
à partir de bluehost
indique que quelque chose écoute déjà sur le port 2222
. Cela ne montre pas ce que c'est cependant.
Solutions:
2222
dans votre invocation ssh
par un autre port non utilisé sur bluehost
. Assurez-vous simplement qu'il soit supérieur à 1023
car les utilisateurs normaux ne peuvent pas se connecter à ports connus; sinon, vous recevrez le même avertissement, que le port soit utilisé ou non.bluehost
) avec Sudo lsof -i TCP:2222
; terminez ou reconfigurez-le pour rendre le port 2222
disponible.Modifier:
Dans votre cas, cette partie de man ssh
semble importante:
-R [bind_address:]port:Host:hostport -R [bind_address:]port:local_socket -R remote_socket:Host:hostport -R remote_socket:local_socket
[…] Par défaut, TCP sockets à l'écoute sur le serveur seront uniquement liés à l'interface de bouclage. Cela peut être annulé en spécifiant un
bind_address
. Unbind_address
ou l'adresse "*
" vide indique que le socket distant doit écouter toutes les interfaces. La spécification d'unbind_address
à distance ne réussira que si l'optionGatewayPorts
du serveur est activée (voirsshd_config(5)
).
Cela signifie que vous devriez avoir GatewayPorts yes
dans le sshd_config
sur bluehost
. Lisez man 5 sshd_config
pour en savoir plus. N'oubliez pas de recharger le service après.
Assurez-vous qu'il n'y a pas de connexion suspendue sur le port 2222 de bluehost. Testez sur bluehost lsof -t -i:2222
si un identifiant de processus utilise le port 2222. En outre, supprimez ce processus (par exemple, avec kill $(lsof -t -i:2222)
).
Cela a résolu le problème pour moi. Espérons que cette information est utile pour quelqu'un d'autre. :)