在 .bashrc 中完成后,docker login 失败

在 .bashrc 中完成后,docker login 失败

在我的 .bashrc 文件末尾有以下内容:

docker login -u AWS -p $(aws --region us-east-2 ecr get-login-password) 636602586062.dkr.ecr.us-east-2.amazonaws.com

但是,每当我打开一个新 shell 时都会出现此错误:

INFO[0000] Error logging in to endpoint, trying next endpoint  error="login attempt to https://636602586062.dkr.ecr.us-east-2.amazonaws.com/v2/ failed with status: 403 Forbidden"
login attempt to https://636602586062.dkr.ecr.us-east-2.amazonaws.com/v2/ failed with status: 403 Forbidden

如果我在提示后手动运行该命令,它会正常工作,但它在 .bashrc 文件中不起作用。

凭据是通过执行 设置的aws configureaws而 CLI 工具则是通过以下方式安装的:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

关于为什么它不起作用以及我该怎么做才能修复它,您有什么想法吗?

如果有必要的话,我正在运行 Ubuntu 22.04。

谢谢!

答案1

您使用的命令不符合文档推荐的格式,-p提供密码的选项不安全。

要以非交互方式运行 docker login 命令,您可以设置 --password-stdin 标志以通过 STDIN 提供密码。使用 STDIN 可防止密码进入 shell 的历史记录或日志文件。

参考这里

命令应该是:

aws --region us-east-2 ecr get-login-password | docker login 636602586062.dkr.ecr.us-east-2.amazonaws.com -u AWS --password-stdin

或者

aws --region us-east-2 ecr get-login-password | docker login -u AWS --password-stdin 636602586062.dkr.ecr.us-east-2.amazonaws.com

上述命令不使用交互式 shell。

我承认我不知道为什么你的命令在文件中不起作用.bashrc,无论如何它与aws没有在中产生输出的命令subshell有关.bashrc(因为你用 打开了一个子shell $(...))。

希望这个回答能帮到你。

相关内容