ssh -o ControlMaster=auto로 인해 GCP Google 컨테이너 레지스트리 인증에 문제가 발생합니까?

ssh -o ControlMaster=auto로 인해 GCP Google 컨테이너 레지스트리 인증에 문제가 발생합니까?

(죄송합니다. SSH와 Google Cloud 질문 사이에 있는 질문입니다.)

Docker를 설치하고, Google 컨테이너 레지스트리(gcr)용 Docker 자격 증명 관리자를 다운로드하고, 이미지를 가져오기 위해 ssh를 통해 GCP VM에 명령을 보내는 Python 스크립트가 있습니다. 명령은 다음과 같습니다:

  1. sudo apt-get 업데이트 && sudo apt-get install -y docker.io && sudo usermod -aG docker $USER
  2. (docker-credential-gcr을 ~/credential_getter/docker-credential-gcr에 다운로드)
  3. PATH=$PATH:~/credential_getter && docker-credential-gcr 구성-docker && docker pull mycontainer_in_gcr

위의 각 명령을 제출하려면 다음을 사용합니다.

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

ControlMaster를 사용하여 명령 간의 지연을 줄였습니다.

명령 1)과 2)는 잘 작동하지만 3)에서는 docker-credential-gcr이 정상적으로 화면에 인쇄한다고 말하는 이상한 동작이 발생하지만 자격 증명 오류로 인해 docker pull이 실패합니다. 그러나 3)이 실패한 후 잠시 후에 터미널로 이동하여 동일한 ssh 명령을 복사하여 붙여넣으면 명령이 올바르게 작동합니다. 마찬가지로 Python 스크립트에서 2)와 3) 사이에 ControlMaster 시간 초과보다 많은 대기 시간을 넣으면 올바르게 작동합니다.

다음을 사용하여 Python 스크립트에서 세 가지 명령을 모두 보내는 경우:

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 설정이 제거됨) 또한 잘 작동합니다.

이러한 다양한 행동의 원인이 무엇인지 아시나요?

관련 정보