Je viens de découvrir la fonction ControlMaster / ControlPath d'OpenSSH, qui vous permet d'utiliser une seule connexion SSH pour exécuter plusieurs terminaux.
Comme j'utilise souvent SSH pour utiliser la redirection de port pour obtenir des sessions VNC chiffrées et authentifiées, j'ai instantanément reconnu que vous ne pouvez pas ajouter de redirection de port à un serveur distant auquel vous avez déjà une connexion établie. Ça craint.
Parfois, plus tard, j'ai découvert que vous pouvez contourner cette limitation en tapant ~ C dans une session de terminal SSH en cours d'exécution. Cela ouvre une ligne de commande qui vous permet d'ajouter ou de supprimer des transferts de port.
Ma question est maintenant: comment puis-je ajouter des transferts de port sur une session SSH existante qui utilise la fonctionnalité ControlMaster / ControlPath, sans avoir besoin d'avoir accès à une session de terminal à l'intérieur de cette session SSH. J'en ai besoin pour activer mon script qui démarre une connexion VNC tunnelée sécurisée pour que j'ajoute et supprime plus tard ses redirections de port.
(Je sais que je pourrais utiliser un multiplexeur de terminal tel que GNU Screen ou tmux, en fait je le fais déjà. Mais j'aime l'idée d'utiliser une seule session SSH pour des raisons serveur.)
Réponses:
C'est assez simple, en fait. Ajoutez simplement le ctl_cmd
-O forward
à votre commande existante, ainsi:devient:
La
ssh
page de manuel présente l'-O ctl_cmd
option:Bien entendu, cela suppose que vous avez activé
ControlMaster yes
votre~/ssh/config
fichier ou-M
la ligne de commande.la source