Quiero usar tmux o screen automáticamente después de ssh. Escribí un código en .ss/config que me ayuda con esto.
# ~/.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 ahora, hay un problema. Si quiero conectarme al mismo servidor desde una segunda terminal en mi computadora local, obviamente esto me adjuntará al mismo nombre de sesión "debek". Puedo crear SCREEN_NAME="debek-{RANDOM}"
un nombre de sesión único para solucionar este problema, pero cuando, por ejemplo, perdí mi conexión e intento conectarme nuevamente, se creará un nuevo nombre de sesión en lugar de conectarme a la última automáticamente.
¿Tiene alguna idea de cómo resolver este problema?
Respuesta1
Hay algunas cosas que puedes hacer:
En lugar de usar .ssh/config, cree un alias que utilice ssh y se adjunte a tmux. Luego puede elegir si desea conectarse o no desde cada terminal cuando realice ssh.
Cree dos alias para el nombre de host (en /etc/hosts o DNS) y configure .ssh/config para ejecutar tmux solo si se conecta a uno pero no al otro.
Haga que el comando remoto solo se adjunte a tmux si aún no está adjunto, por ejemplo marcando
tmux has 2>/dev/null && [ $(tmux lsc -t$SESSION_NAME|wc -l) -eq 0 ]
. Otmux display -pt$SESSION_NAME '#{session_attached}'
.