J'ai regardé beaucoup de questions similaires à ce sujet, mais je n'ai rien trouvé pour résoudre mon problème.
Je voudrais pouvoir ouvrir une connexion ssh au serveur de mon université et garder la connexion ouverte en arrière-plan. Ce que je fais, c'est que je ssh dans le serveur uni et exécute un script, puis scp un fichier à partir de là vers ma télécommande, comme:
$ssh [email protected] "./bin/script"
[email protected]'s password:
$scp [email protected]:~/some_file.txt .
[email protected]'s password:
Je fais cette séquence de commandes une tonne, et finalement ma connexion est refusée parce que l'université le prend pour un logiciel malveillant. Donc, ce que j'aimerais pouvoir faire, c'est ouvrir la connexion ssh une fois, puis la garder ouverte pour que je puisse exécuter le script en continu sur le serveur distant. Je ne veux pas ouvrir la connexion ssh dans un autre terminal car c'est très ennuyeux d'avoir deux terminaux ouverts et constamment alt + tabulation sur le mauvais. Il doit sûrement y avoir un moyen de le faire, j'apprécierais vraiment une aide.
ssh peut réutiliser les connexions existantes.
Voici une citation d'une réponse de chepner à ceci question similaire sur Stack Overflow :
Si vous ouvrez la première connexion avec
-M
:ssh -M $REMOTEHOST
connexions ultérieures à
$REMOTEHOST
sera "superposé" sur la connexion établie par le maîtressh
. Plus particulièrement, aucune authentification supplémentaire n'est requise. Voirman ssh_config
sous "ControlMaster" pour plus de détails. Utilisation-S
pour spécifier le chemin d'accès à la socket partagée; Je ne sais pas quelle est la valeur par défaut, car je configure le partage de connexion à l'aide du fichier de configuration à la place.Dans mon
.ssh/config
fichier, j'ai les lignes suivantes:Host * ControlMaster auto ControlPath ~/.ssh/ssh_mux_%h_%p_%r
De cette façon, je n'ai pas à me rappeler d'utiliser
-M
ou-S
;ssh
détermine s'il existe déjà une connexion partageable pour la combinaison hôte/port/nom d'utilisateur et l'utilise si possible.