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:
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.
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.
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 aktivierentmux display -pt$SESSION_NAME '#{session_attached}'
.