tmux sur deux serveurs
Article mis en ligne le 10 juillet 2022
dernière modification le 23 juillet 2022

par Rémi

Un alias pour atteindre mes serveurs directement en session tmux
Le code suivant est dans /.bash_aliases sur votre portable par exemple
Sur les deux serveurs , il faut installer tmux (sous debian : apt install tmux)
Cela permet de ne pas perdre les sessions en cours même lorsque la connexion se ferme, ou que l’on va se coucher : ’Control b’ puis ’d’ dans tmux, cela ferme la connexion, mais tout ce que vous faites dedans continu à tourner ! Un exemple concret ?
Je viens de migrer mon routeur wifi de openwrt vers debian. J’en ai profiter pour placer un ssd à la place du disque dur initial. Pour faire les copies de fichiers :
dans tmux, j’ai lancer un sftp, puis commencer à recopier les fichiers assez gros (oui très gros). Je ferme tmux, sftp continu de fonctionner, et je reviens le lendemain tout est fini.

function ssh_tmux() {
       # connexion au routeur wifi ou au serveur en fonction du parametre en entree
       # $ROUTEUR et $SERVEUR sont les adresse des machines distantes
       # tmux attach -t xxx pour une session nomée de tmux
       ROUTEUR="192.20.30.1"
       SERVEUR="192.168.3.1"
       PORT_R="4567"
       PORT_S="12345"

       if [ $1 = "routeur" ]
       then
               nc -zv $ROUTEUR $PORT_R 2&>1 && ssh -p "$PORT_R" -t "$ROUTEUR" "tmux attach -t vyger || tmux" || echo "Pas de réponse du serveur ssh."
       elif [ $1 = "serveur" ]
       then
               nc -zv $SERVEUR $PORT_S 2&>1 && ssh -p "$PORT_S" -t "$SERVEUR" "tmux attach || tmux" || echo "Pas de réponse du serveur ssh.";
       else
               echo "ssh_tmux [routeur][serveur]";
       fi

}

Une fois ceci fait, pour une prise en compte immédiate :

$ source ~.bashrc

Et pour plus de sécurité, il vaut mieux éviter les mots de passe.
Créer une clef ssh et copions la sur chaque serveur. Après, plus besoin de mettre un mot de passe, ou alors, il ne sera qu’un local :

$ ssh-keygen -t ed25519

demande de mettre un mot de passe (à faire ou non, à vous de voir)
Copie de la clé :

ssh-copy-id -p 12345 <user>@192.168.3.1