Solution 1 :
Vous lui demandez d'écouter sur votre port local 22 et de transférer les connexions vers le port 8090 d'un système distant. Vous ne pouvez pas le faire, car votre port local 22 est déjà pris par votre serveur SSH local.
Je pense que ce que vous recherchez est le transfert à distance. Remplacement de -L 22:localhost:8090
avec -R 8090:localhost:22
dira à l'hôte distant d'écouter sur le port 8090 et de transmettre les requêtes à votre serveur SSH.
Si vous laissez la connexion en cours d'exécution afin de pouvoir y accéder plus tard à partir d'un site distant, vous devrez vous assurer que la connexion n'expire pas en raison d'une inactivité en ajoutant les options appropriées (-o TCPKeepAlive=yes
ou -o ServerAliveInterval=30
)
Vous obtiendrez donc quelque chose comme :
ssh -N [email protected]_server -R 8090:localhost:22 -o ServerAliveInterval=30
De plus, si l'un des sauts de réseau entre vous et le serveur est en panne à un moment donné, la connexion sera interrompue malgré toutes les options KeepAlive que vous spécifiez, vous pouvez donc ajouter cette commande à inittab, ou consulter le paquet daemontools ou votre distribution equivalent , de sorte qu'il démarre toujours au démarrage et est redémarré lorsqu'il se termine pour une raison autre que l'arrêt du système (ou vous pouvez l'exécuter à partir d'un script shell qui boucle à l'infini, mais init ou daemontools sont des solutions plus propres).
Solution 2 :
La raison pour laquelle vous ne pouvez pas le faire est que vous essayez de transférer le port 22 sur l'ordinateur local vers le port 8090 sur le serveur distant et que quelque chose est déjà en cours d'exécution sur le port 22 sur le serveur local. Il est fort probable que vous ayez un serveur SSH en cours d'exécution. Vous pouvez résoudre ce problème en modifiant le 22 à une valeur différente. Vous pouvez vérifier si un port est libre en exécutant :
# netstat -lep --tcp
Cela répertorie tous les sockets d'écoute, donc si le port n'est pas répertorié, alors c'est gratuit.
Solution 3 :
J'utilise la commande lsof -i :PortNumber pour vérifier si le port est libre :
# lsof -i :2272
si le port est libre, vous ne verrez rien dans la sortie.