【发布时间】:2019-10-29 11:53:09
【问题描述】:
使用 git for windows (git-scm.com) 和脚本,我可以让 Bash 停止询问密码,但我似乎无法从 git GUI 中删除密码提示。
远程的 url 使用 ssh 链接(见下文),所以我很确定这不是问题。但我不是 git 和 SSH 方面的专家..
git@gitlab.com:repo
已使用提供的密码创建 SSH 密钥 (ED25519),并将公钥添加到主机帐户。 SSH 密钥存储在典型位置C:\Users\<user>\.ssh\id_ed25519。在 GUI 中单击 Help->Show SSH Key 时,它会显示我正在使用的 ssh 密钥。 ssh-agent 正在后台运行,并且 ssh 密钥已通过以下设置添加到 ssh-agent。
设置 ssh-agent 我使用了here 提供的代码(复制并粘贴在下面以供参考)在C:\Users\<user> 路径下创建.bashrc 文件。在 bash 提示下,一切似乎都按预期运行,但在 Git GUI 下却没有。
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
在我看来,在执行推送、获取或任何其他相关远程功能时,Git GUI 似乎没有使用 ssh-agent。在设置 ssh-agent、.bashrc 脚本和/或 GUI 以完成删除密码提示时,我是否遗漏了一个步骤?还是有其他事情发生?
非常感谢任何和所有帮助,在此先感谢
【问题讨论】:
-
哪个 Git GUI?你输入什么命令来启动那个 Git GUI?你是从 bash 会话中输入的吗?
-
使用 git for windows (git-scm.com)。通常我从上下文窗口启动 GUI(右键单击 Windows 资源管理器中的文件夹)。然后在整个工作流程中执行暂存、提交和/或推送的典型用法。然后关闭窗口直到下一次。
-
@VonC,这确实带来了好处。有趣的是,如果 git GUI 使用
git gui命令从 bash 启动,git GUI 会停止询问 ssh 密码... -
是的,从上下文菜单中,它可以使用“所有用户”或“系统”帐户,它们没有像您自己的
C:\Users\<user>那样的~/.ssh文件夹。
标签: git windows-10 openssh ssh-agent git-for-windows