ssh -o ControlMaster=auto verursacht ein Problem mit der GCP-Google-Container-Registry-Authentifizierung?

ssh -o ControlMaster=auto verursacht ein Problem mit der GCP-Google-Container-Registry-Authentifizierung?

(Entschuldigung, das ist irgendwo zwischen einer SSH- und einer Google Cloud-Frage)

Ich habe ein Python-Skript, das Befehle über SSH an eine GCP-VM sendet, um Docker zu installieren, den Docker Credential Manager für Google Container Registry (GCR) herunterzuladen und ein Image abzurufen. Die Befehle lauten:

  1. sudo apt-get update und sudo apt-get install -y docker.io und sudo usermod -aG docker $USER
  2. (Laden Sie docker-credential-gcr nach ~/credential_getter/docker-credential-gcr herunter)
  3. PFAD=$PFAD:~/credential_getter && docker-credential-gcr configure-docker && docker pull mycontainer_in_gcr

Um jeden der oben genannten Befehle zu übermitteln, verwende ich Folgendes:

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

Wobei ich ControlMaster verwende, um Verzögerungen zwischen Befehlen zu reduzieren.

Die Befehle 1) und 2) funktionieren einwandfrei, aber bei 3) tritt ein seltsames Verhalten auf, bei dem docker-credential-gcr angibt, dass es wie üblich auf dem Bildschirm gedruckt wird, aber dann schlägt docker pull mit einem Anmeldefehler fehl. Wenn ich dann aber ein paar Augenblicke nach dem Fehlschlagen von 3) in mein Terminal gehe und denselben SSH-Befehl kopiere und einfüge, funktioniert der Befehl korrekt. Ebenso funktioniert es korrekt, wenn ich im Python-Skript zwischen 2) und 3) eine Wartezeit von mehr als dem ControlMaster-Timeout einfüge.

Wenn ich alle drei Befehle im Python-Skript sende, verwenden wir:

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

(ControlMaster-Einstellungen entfernt) es funktioniert auch einwandfrei.

Irgendeine Idee, was diese unterschiedlichen Verhaltensweisen verursachen könnte?

verwandte Informationen