Conecte-se automaticamente a um tmux ou tela durante a conexão ssh e como definir SESSION_NAME exclusiva

Conecte-se automaticamente a um tmux ou tela durante a conexão ssh e como definir SESSION_NAME exclusiva

Quero usar o tmux ou a tela automaticamente após o ssh. Escrevi algum código em .ss/config que me ajuda com isso.

# ~/.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

Por enquanto, há um problema. Se eu quiser me conectar ao mesmo servidor a partir de um segundo terminal no meu computador local, isso obviamente me anexa ao mesmo nome de sessão "debek". Posso criar SCREEN_NAME="debek-{RANDOM}"um nome de sessão exclusivo para contornar isso, mas quando, por exemplo, perdi minha conexão e tento me conectar novamente, ele criará um novo nome de sessão, em vez de me conectar ao último automaticamente.

Você tem alguma ideia de como resolver esse problema?

Responder1

Existem algumas coisas que você pode fazer:

  1. Em vez de usar .ssh/config, crie um alias que faça ssh e anexe ao tmux. Então você pode escolher se deseja anexar ou não cada terminal ao fazer o ssh.

  2. Crie dois aliases para o nome do host (em /etc/hosts ou DNS) e configure .ssh/config para executar o tmux apenas se você se conectar a um, mas não ao outro.

  3. Faça com que o comando remoto seja anexado apenas ao tmux se ele ainda não estiver anexado, por exemplo, verificando tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]. Ou tmux display -pt$SESSION_NAME '#{session_attached}'.

informação relacionada