(Lo siento, esto está en algún lugar entre una pregunta sobre ssh y la nube de Google)
Tengo un script de Python que envía comandos a una máquina virtual de GCP a través de ssh para instalar Docker, descargar el administrador de credenciales de Docker para el registro de contenedores de Google (gcr) y extraer una imagen. Los comandos son:
- sudo apt-get update && sudo apt-get install -y docker.io && sudo usermod -aG docker $USER
- (descargue docker-credential-gcr en ~/credential_getter/docker-credential-gcr)
- RUTA=$RUTA:~/credential_getter && docker-credential-gcr configure-docker && docker pull mycontainer_in_gcr
Para enviar cada comando anterior, utilizo lo siguiente:
ssh -i my.pem -o ConnectTimeout=120s -o StrictHostKeyChecking=no -o ControlMaster=auto -o ControlPath=/tmp/mypath/%C -o ControlPersist=10s -o IdentitiesOnly=yes -o ExitOnForwardFailure=yes -o ServerAliveInterval=5 -o ServerAliveCountMax=3 UNAME@IPADDRESS bash --login -c -i COMMAND
Donde uso ControlMaster para reducir cualquier retraso entre los comandos.
Los comandos 1) y 2) funcionan bien, pero con 3) obtengo un comportamiento extraño en el que docker-credential-gcr dice que se imprime en la pantalla como de costumbre, pero luego la extracción de docker falla con un error de credencial. Pero luego, si entro a mi terminal unos momentos después de que 3) falla y copio y pego el mismo comando ssh, el comando funciona correctamente. De manera similar, si hago una espera en el script de Python entre 2) y 3) mayor que el tiempo de espera de ControlMaster, funciona correctamente.
Si envío los tres comandos en el script de Python usando:
ssh -i my.pem -o ConnectTimeout=120s -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o ExitOnForwardFailure=yes -o ServerAliveInterval=5 -o ServerAliveCountMax=3 UNAME@IPADDRESS bash --login -c -i COMMAND
(Se eliminó la configuración de ControlMaster) también funciona bien.
¿Alguna idea de qué podría causar estos diferentes comportamientos?