J'utilise tmux sur ma machine locale et j'ai généralement plusieurs sessions simultanément.
Ce que je fais habituellement, c'est que j'ai une session avec différentes fenêtres pour travailler localement et les autres sessions dans lesquelles je connecte plusieurs fenêtres à un hôte par session.
Une arborescence de session / fenêtre ressemblerait à ceci dans l'utilisation quotidienne que je fais de tmux:
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2: somehost
| \_ window1: ssh user@somehost
| \_ window2: ssh user@somehost
| \_ ...
|
+ session 3: someotherhost
\_ window1: ssh user@someotherhost
\_ window2: ssh user@someotherhost
\_ ...
Existe-t-il un moyen de faire de la session 2 et de la session 3 une sorte de sessions distantes se connectant à une session tmux créée sur un hôte ou un autre?
L'arbre ci-dessus ressemblerait à ceci:
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2 linked to an existing session on somehost
| \_ window1: shell on somehost
| \_ window2: shell on somehost
| \_ ...
|
+ session 3 linked to an existing session on someotherhost
\_ window1: shell on someotherhost
\_ window2: shell on someotherhost
\_ ...
J'ai trouvé ce sujet mais je ne suis pas sûr que c'est ce que je veux faire: le partage d'un socket tmux entre hôtes est-il possible?
Je suppose que ce que je cherche nécessiterait que j'aie la même configuration tmux sur ma machine locale, un hôte ou un autre, mais ce ne serait pas un problème.
Réponses:
Vous pouvez passer une commande à ssh lors de la connexion à un hôte distant. Incluez l'
-t
option avectmux attach-session
pour vous connecter à la session tmux distante:Ce post sur l' attachement à une session tmux via ssh l' explique plus en détail.
la source
ssh <remote host> -t /path/to/tmux a -t <my-session-name>
, avait besoin d'un supplément-t
Si votre problème principal est que vous devez taper
ssh remotehost
chaque fois que vous ouvrez une nouvelle fenêtre, l'default-command
option de session peut être une solution de contournement.Il exécute automatiquement la commande que vous spécifiez lorsque vous ouvrez de nouvelles fenêtres dans les sessions auxquelles vous le définissez.
Un réglage simple dans
.tmux.conf
:bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"
Cette liaison de clé
Ctrl-r
crée une nouvelle session où chaque fenêtre nouvellement ouverte s'exécute d'abordssh remotehost
en votre nom.Vous pouvez choisir les hôtes à connecter au moment de la création de la session avec les paramètres ci-dessous:
bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""
Celui-ci vous demande l'hôte que vous souhaitez faire
ssh
à chaque création de session (pas à chaque création de fenêtre) et démarre la session dédiée à cet hôte.Il faut peu de temps pour en exécuter plusieurs
ssh
si vous activez le multiplexage SSH dans votre configuration ssh. L'.ssh/config
exemple est ci-dessous:Notez que ce paramètre tmux ne crée pas de sessions tmux dans des hôtes distants. Si la connexion ssh est perdue, les fenêtres tmux affectées ne reviennent jamais.
la source
Vous pouvez utiliser un outil comme socat pour tunneler le socket de domaine unix utilisé par tmux sur votre machine locale. Mais vous êtes vraiment en train d'échanger un tunnel (ssh) pour un autre (socat) donc ce n'est pas vraiment mieux, et aussi peu sûr.
la source
socat
traversssh
? 🙂tmate
pourrait être le meilleur outil pour la gestion à distance de tmuxSi vous parlez de shell distant, vous voulez dire que vous pouvez y exécuter des commandes, en d'autres termes, vous avez un accès direct. Dans ce cas, vous pouvez simplement utiliser la
ssh
connexion pour chaque fenêtre distante.Vous pouvez y dire quelque chose comme:
"Hé, mais il n'y a aucun moyen d'avoir plusieurs fenêtres pour chaque serveur distant!"
et c'est vrai, à cause des restrictions ssh. Mais, vous pouvez démarrer la session tmux sur chacun ou votre serveur distant. REMARQUE: dans ce cas, vous devez relier par défaut
Ctrl+b
sur la machine locale pour éviter les collisions.Je vous recommande également d'utiliser
tmuxinator
, c'est un outil très utile si vous rectifiez votre session tmux au moins tous les jours.la source