我想从Bash脚本提供一个密码。我已经尝试了以下方法:
echo 'mypass' | git pull git pull < 'mypass' git pull < echo 'mypass'
似乎都不管用。
t9eec4r01#
1.创建包含以下内容的文件git_password.sh:
git_password.sh
#!/bin/sh exec echo "$GIT_PASSWORD"
1.将您的口令分配给GIT_PASSWORD环境变量
$ GIT_PASSWORD=your_password
1.使用GIT_ASKPASS环境变量执行git命令。它将强制提示输入密码,并执行git_password. sh作为回调:
$ GIT_ASKPASS=./git_password.sh git clone $REPO
mzmfm0qo2#
gitcredentials 就是 答案 :
gitcredentials
Git 有时 需要 用户 提供 凭据 才能 执行 操作 ;例如 , 它 可能 需要 请求 用户 名 和 密码 才 能 通过 HTTP 访问 远程 仓库 。 2 本 手册 描述 了 Git 请求 这些 证书 的 机制 , 以及 一些 避免 重复 输入 这些 证书 的 特性 。[...]
如果 没有 定义 任何 凭据 助手 , Git 将 尝试 以下 策略 来 询问 用户 的 用户 名 和 密码 :1.如果 设置 了 GIT_ASKPASS 环境 变量 , 则 调用 由 该 变量 指定 的 程序 。 在 命令 行 上 向 程序 提供 适当 的 提示 符 , 并 从 其 标准 输出 中 读取 用户 输入 。1.否则 , 如果 设置 了 core.askPass 配置 变量 , 则 使用 其 值 , 如上 所 述 .1.否则 , 如果 设置 了 SSH_ASKPASS 环境 变量 , 则 按 上述 方式 使用 其 值 。1.否则 , 在 终端 上 提示 用户 。[...]另 一方面 , 凭证 助手 是 外部 程序 , Git 可以 向 其 请求 用户 名 和 密码 ;它们 通常 与 由 OS 或 其它 程序 提供 的 安全 存储 接口 。您 可能 还 安装 了 第 三方 帮助 程序 ;在 git help -a 的 输出 中 搜索 credential-* , 并 参考 各个 助手 的 文档 。 一旦 你 选择 了 一 个 助手 , 你 可以 通过 将 其 名称 输入 到 credential.helper 变量 中 来 告诉 Git 使用 它 。git help -a | grep credential-* 显示 以下 帮助 器 :
GIT_ASKPASS
core.askPass
SSH_ASKPASS
git help -a
credential-*
credential.helper
git help -a | grep credential-*
credential remote credential-cache remote-ext credential-cache--daemon remote-fd credential-osxkeychain remote-ftp credential-store remote-ftps
中 的 每 一 个
5hcedyr03#
可以在遥控器的定义中包含密码,如下所示:
https://user:password@server
这样,您就不需要为每次提取提供它。(Much类似于 How do I provide a username and password when running “git clone git@remote.git”? 中建议的解决方案。)
**警告:**更好的方法是使用SSH而不是HTTPS,并将公钥存储在GitHub中。因为远程url中的凭据可能会落在命令历史记录、脚本或配置文件中,然后可以被其他人看到。
nimxete24#
向Bash脚本提供输入的主要技术是 ”Automatically enter input in command line“:
echo 'mypass' | git pull # or printf 'mypass\n' | git pull
从Git 1.8.3开始,我更喜欢使用**Git credential netrc helper**,它会为我获取并提供正确的密码。从Git 2.x开始,Git凭证助手是首选。最近的一个(2022年)是微软(但跨平台)GCM (Git Credential Manager)。Git 2.39(Q4 2022)的文档现在除了密码之外还提到了 * token *:参见M Hickford ( hickford )的commit 54e95b4(2022年11月8日)。(2022年11月14日,由Taylor Blau -- ttaylorr --在commit dc8be39中合并)我的天啊!提及密码备选项签署人:M希克福德签署人:泰勒·布劳Git要求输入“密码”,但用户可能会使用个人访问令牌或OAuth访问令牌。示例:
hickford
ttaylorr
Password for 'https://AzureDiamond@github.com':
gitcredentials现在在其手册页中包括:Git有时需要用户提供凭据才能执行操作;例如,它可能需要请求用户名和密码,以便通过HTTP访问远程存储库。
某些远程接受个人访问令牌或OAuth访问令牌作为密码。
本手册描述了Git用来请求这些凭证的机制,以及避免重复输入这些凭证的一些特性。
4条答案
按热度按时间t9eec4r01#
1.创建包含以下内容的文件
git_password.sh
:1.将您的口令分配给GIT_PASSWORD环境变量
1.使用GIT_ASKPASS环境变量执行git命令。它将强制提示输入密码,并执行git_password. sh作为回调:
mzmfm0qo2#
gitcredentials
就是 答案 :Git 有时 需要 用户 提供 凭据 才能 执行 操作 ;例如 , 它 可能 需要 请求 用户 名 和 密码 才 能 通过 HTTP 访问 远程 仓库 。 2 本 手册 描述 了 Git 请求 这些 证书 的 机制 , 以及 一些 避免 重复 输入 这些 证书 的 特性 。
[...]
如果 没有 定义 任何 凭据 助手 , Git 将 尝试 以下 策略 来 询问 用户 的 用户 名 和 密码 :
1.如果 设置 了
GIT_ASKPASS
环境 变量 , 则 调用 由 该 变量 指定 的 程序 。 在 命令 行 上 向 程序 提供 适当 的 提示 符 , 并 从 其 标准 输出 中 读取 用户 输入 。1.否则 , 如果 设置 了
core.askPass
配置 变量 , 则 使用 其 值 , 如上 所 述 .1.否则 , 如果 设置 了
SSH_ASKPASS
环境 变量 , 则 按 上述 方式 使用 其 值 。1.否则 , 在 终端 上 提示 用户 。
[...]
另 一方面 , 凭证 助手 是 外部 程序 , Git 可以 向 其 请求 用户 名 和 密码 ;它们 通常 与 由 OS 或 其它 程序 提供 的 安全 存储 接口 。
您 可能 还 安装 了 第 三方 帮助 程序 ;在
git help -a
的 输出 中 搜索credential-*
, 并 参考 各个 助手 的 文档 。 一旦 你 选择 了 一 个 助手 , 你 可以 通过 将 其 名称 输入 到credential.helper
变量 中 来 告诉 Git 使用 它 。git help -a | grep credential-*
显示 以下 帮助 器 :中 的 每 一 个
5hcedyr03#
可以在遥控器的定义中包含密码,如下所示:
这样,您就不需要为每次提取提供它。
(Much类似于 How do I provide a username and password when running “git clone git@remote.git”? 中建议的解决方案。)
**警告:**更好的方法是使用SSH而不是HTTPS,并将公钥存储在GitHub中。因为远程url中的凭据可能会落在命令历史记录、脚本或配置文件中,然后可以被其他人看到。
nimxete24#
向Bash脚本提供输入的主要技术是 ”Automatically enter input in command line“:
从Git 1.8.3开始,我更喜欢使用**Git credential netrc helper**,它会为我获取并提供正确的密码。
从Git 2.x开始,Git凭证助手是首选。
最近的一个(2022年)是微软(但跨平台)GCM (Git Credential Manager)。
Git 2.39(Q4 2022)的文档现在除了密码之外还提到了 * token *:
参见M Hickford (
hickford
)的commit 54e95b4(2022年11月8日)。(2022年11月14日,由Taylor Blau --
ttaylorr
--在commit dc8be39中合并)我的天啊!提及密码备选项
签署人:M希克福德
签署人:泰勒·布劳
Git要求输入“密码”,但用户可能会使用个人访问令牌或OAuth访问令牌。
示例:
gitcredentials
现在在其手册页中包括:Git有时需要用户提供凭据才能执行操作;例如,它可能需要请求用户名和密码,以便通过HTTP访问远程存储库。
某些远程接受个人访问令牌或OAuth访问令牌作为密码。
本手册描述了Git用来请求这些凭证的机制,以及避免重复输入这些凭证的一些特性。