ssh -o ControlMaster=auto 導致 GCP google 容器登錄機碼驗證出現問題?

ssh -o ControlMaster=auto 導致 GCP google 容器登錄機碼驗證出現問題?

(抱歉,這是介於 ssh 和 google cloud 問題之間的問題)

我有一個 python 腳本,透過 ssh 向 GCP 虛擬機器發送命令來安裝 docker,下載 google 容器註冊表 (gcr) 的 docker 憑證管理器,並提取映像。命令是:

  1. sudo apt-get update && 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 設定已刪除)它也可以正常工作。

知道什麼可能導致這些不同的行為嗎?

相關內容