Automatische Verbindung zu einem Tmux oder Bildschirm während einer SSH-Verbindung und Festlegen eines eindeutigen SESSION_NAME

Automatische Verbindung zu einem Tmux oder Bildschirm während einer SSH-Verbindung und Festlegen eines eindeutigen SESSION_NAME

Ich möchte tmux oder screen automatisch nach ssh verwenden. Ich habe Code in .ss/config geschrieben, der mir dabei hilft.

# ~/.ssh/config

Match exec "[[ $(ps h o args p $PPID | wc -w) -eq 2 ]]"
     RemoteCommand SESSION_NAME="debek"; tmux a -t ${SESSION_NAME} || tmux new -s ${SESSION_NAME} || screen -r ${SESSION_NAME} || screen -S ${SESSION_NAME}
     RequestTTY yes

Im Moment gibt es ein Problem. Wenn ich mich von einem zweiten Terminal auf meinem lokalen Computer aus mit demselben Server verbinden möchte, werde ich natürlich mit demselben Sitzungsnamen „debek“ verbunden. Ich kann SCREEN_NAME="debek-{RANDOM}"einen eindeutigen Sitzungsnamen verwenden, um dies zu umgehen, aber wenn ich beispielsweise meine Verbindung verliere und versuche, mich erneut zu verbinden, wird mir ein neuer Sitzungsname erstellt, anstatt mich automatisch mit meinem letzten zu verbinden.

Haben Sie eine Idee, wie sich dieses Problem lösen lässt?

Antwort1

Sie können Folgendes tun:

  1. Anstatt .ssh/config zu verwenden, erstellen Sie einen Alias, der per SSH an tmux angehängt wird. Dann können Sie von jedem Terminal aus wählen, ob Sie per SSH angehängt werden möchten oder nicht.

  2. Erstellen Sie zwei Aliase für den Hostnamen (in /etc/hosts oder DNS) und konfigurieren Sie .ssh/config so, dass tmux nur ausgeführt wird, wenn Sie eine Verbindung zu einem herstellen, aber nicht zu dem anderen.

  3. Sorgen Sie dafür, dass der Remote-Befehl nur dann an tmux angehängt wird, wenn dies nicht bereits der Fall ist, indem Sie beispielsweise tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]. oder aktivieren tmux display -pt$SESSION_NAME '#{session_attached}'.

verwandte Informationen