Me gustaría forzar las conexiones ssh secundarias para usar una conexión ControlMaster existente y fallar si el maestro no está presente.
Con ssh -o ControlPath=somewhere -o ControlMaster=no ...
esta nueva conexión buscará el maestro existente y, si no lo encuentra, recurrirá a la creación de su propia conexión independiente. ¿Podemos simplemente deshabilitar la reserva?
Lo más cercano que se me ocurre es
ssh -o ControlPath=somewhere -o ControlMaster=no -O check \
&& ssh -o ControlPath=somewhere -o ControlMaster=no
¿Me estoy perdiendo de algo?
¿Por qué?
Un caso común para mí es donde se ssh
requiere cierta interacción con un OTP o una cosa de hardware. Normalmente trabajo con varias terminales, cada una con algo parecido while sleep 1; do ssh-and-reconnect-to-a-screen-session ; done
.
En mi mundo perfecto, habría una única conexión maestra (con OTP / verificación de token) y luego cualquier otra terminal se conectaría y fallaría hasta que pudieran conectarse a través de la conexión maestra de control.
Tal como está (dependiendo del orden aleatorio ~ en el que las conexiones anteriores fallan y reintentan), abrir la tapa de mi computadora portátil me genera varias verificaciones OTP / token a la vez porque cada ssh
comando quiere ser el / un nuevo maestro.
(Una vez más, en un mundo perfecto, mosh
se resolvería el problema de retomar donde lo dejé, pero aquí no es realmente una opción):
fuente
-L 2222:localhost:22
en la conexión "maestra", luego configuré los esclavos para usar-p 2222
, pero creo que eso me lleva más abajo en el agujero del conejo de control de flujo TCP sobre TCP.Respuestas:
Su caso de uso es realmente específico. No creo que te pierdas algo.
Solo hay unos pocos interruptores de línea de comandos más
-S
y-M
que puede utilizar, si no desea poner eso en~/.ssh/config
:fuente