¿Por qué la "ssh_config (5)" páginas de manual recomiendan que la ControlPath
opción debe contener al menos el %h
, %p
y %r
marcadores de posición con el fin de identificarlo de forma inequívoca cada conexión compartida?
Pensé que varias sesiones deberían compartir el mismo socket con una conexión al mismo host. ¿No tendría sentido tener una definición simple como:
ControlPath ~/.cache/ssh/mux/%h
En lugar de algo como:
ControlPath ~/.cache/ssh/mux/%r@%h:%p
Según tengo entendido con la primera definición, se comparte una conexión entre varias sesiones con diferentes usuarios remotos, al mismo host remoto, en diferentes puertos remotos.
Quiero tener la primera definición en la sección predeterminada del host para que sea suficiente decirlo ssh -o ControlMaster=no
.
Quiero compartir la conexión con el mismo host remoto entre todas las sesiones iniciadas por el mismo usuario local, independientemente del usuario remoto y el puerto remoto. El socket del cliente maestro debe vivir debajo del directorio de inicio del usuario local.
fuente
Respuestas:
Ellos pueden. Sin embargo, tenga en cuenta que si se conecta a un host mediante una conexión existente
ControlPath
, independientemente del usuario con el que desee iniciar sesión, iniciará sesión como el usuario original de la conexión. Por ejemplo, sin conexión establecida a "algún lugar":Esta sesión es bob @ en alguna parte.
Esta sesión también será bob @ en alguna parte, porque usó el mismo ControlPath y set
ControlMaster=no
; siControlMaster=yes
, iniciarás sesión como demanda, pero ssh habrá ignorado tu argumento ControlPath, como se indica enman ssh_config
:Como evidencia de esto, si
ControlMaster=yes
en ambos casos, cuando Bob salga, el socket ControlPath~/.ssh/somewhere
desaparecerá a pesar de que la sesión "demandar" todavía se está ejecutando, lo que significa que la sesión demandada nunca usó ese socket .Por lo tanto, si desea utilizar la misma conexión,
%h
está bien, pero tenga en cuenta que no puede compartir una conexión ya que varios usuarios remotos diferentes : ssh no se lo permitirá.fuente
Podría tener múltiples usuarios y múltiples puertos en uso incluso para el mismo servidor. Yo mismo, me conecto a cientos de sistemas en las intranets de la compañía, la mayoría tiene múltiples usuarios con diferentes funciones o servidores de aplicaciones. El acceso al usuario A es muy diferente al acceso al usuario B, y la conexión maestra debería ser diferente. Más sucintamente, si fuera a correr:
Como puede ver, no obtenemos una sesión OpenSSH con el usuario B, sino la original con el usuario A. Eso significa que el directorio de inicio, los permisos e incluso la autenticación en sí no es lo que se espera. Con esto, si intentara eliminar un archivo en el directorio del usuario B, entonces a) podría ser el archivo incorrecto yb) podría tener permisos incorrectos.
Si nunca se conectará a más de un usuario en un servidor usando un solo puerto, entonces sí, usar
%h
podría ser suficiente. En su~/.ssh/config
archivo, desearía usar:Con la
ControlPersist
opción, la conexión maestra permanece abierta en segundo plano hasta que se cancela o finaliza conssh -O exit
. Esta es una buena característica para configurarlo y olvidarlo.Pero si hay alguna posibilidad de conectarse a más de un usuario en cualquier anfitrión, entonces usted quiere algo más seguro:
fuente