Tunnel SSH en arrière-plan

17

J'ai un processus qui s'attend à ce qu'une connexion de tunnel ssh s'exécute correctement et j'utilise la commande suivante:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -N &

J'ai géré cela avec succès pendant 8 mois, récemment notre hébergeur a dû apporter des modifications matérielles pour mettre à jour notre machine et a mis à niveau notre machine avec un nouveau noyau pour Ubuntu. Il est passé de 4.8.3-x86_64-linode76 à 4.8.6-x86_64-linode78.

Après un tas de problèmes, nous avons dû mettre à jour la commande comme suit:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -fN

Lors de la recherche de la documentation ssh, le paramètre -f

Demande à ssh de passer en arrière-plan juste avant l'exécution de la commande. C'est utile si ssh va demander des mots de passe ou des phrases secrètes, mais que l'utilisateur le veut en arrière-plan. Cela implique -n. La façon recommandée de démarrer des programmes X11 sur un site distant est avec quelque chose comme ssh -f host xterm.

Lors de la recherche de la commande bash pour "&"

Placez un processus en arrière-plan (voir multitâche dans "Utilisation intermédiaire de> Le système d'exploitation UNIX").

Y a-t-il fondamentalement une différence dans ces 2 commandes?

develop4fun2011
la source

Réponses:

22

Oui il y a. ssh &s'exécute sshen arrière-plan depuis le tout début. ssh -fdémarre sshau premier plan, lui permettant de demander des mots de passe, etc., et se sshmet ensuite en arrière-plan juste avant d'exécuter la commande demandée.

AlexP
la source
avez-vous une idée de pourquoi avec le nouveau serveur je serais obligé d'utiliser le ssh -f plutôt que le ssh &. En plus de cela, il semble que ssh -f soit une meilleure approche, seriez-vous d'accord avec cela?
develop4fun2011
Peut-être que le nouveau système a un client ssh plus récent (ou tout simplement différent)?
AlexP