我试图通过 GIT_ASKPASS 为 git 提供密码,如下所示:
export PASSWORD=<secret>
export GIT_ASKPASS="/usr/bin/echo $PASSWORD"
git clone https://username@domain.com/git-repo/repo.git
Run Code Online (Sandbox Code Playgroud)
但我得到:
error: cannot run /usr/bin/echo <secret>: No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以看来我不允许在中给出参数GIT_ASKPASS
?
现在我可以创建一个只包含以下内容的脚本:
/usr/bin/echo $PASSWORD
Run Code Online (Sandbox Code Playgroud)
但我想知道:有没有一种方法可以在不创建临时脚本的情况下执行此操作?
主要问题是整个变量被解释为程序名称。那么,制作另一个脚本,let\xe2\x80\x99s 调用它password_provider.sh
,它会告诉我们密码呢?
#! /bin/sh\necho <secret>\n
Run Code Online (Sandbox Code Playgroud)\n\n然后你可以运行:export GIT_ASKPASS="./password_provider.sh"
请记住,这意味着以纯文本形式存储密码,这通常不是一个好的安全实践。您应该更喜欢公钥身份验证或真正的凭证助手。
\n