当前位置: 首页 > 知识库问答 >
问题:

git推送在bash中使用ssh-agent,但不是gui

叶修永
2023-03-14

使用git for windows(git-scm.com)和脚本,我可以让Bash停止询问密码,但我似乎无法从git GUI中删除密码提示。

远程的url使用ssh链接(见下文),所以我很确定这不是问题所在。但我不是git和SSH方面的专家。。

git@gitlab.com:repo

SSH密钥(ED25519)已使用提供的密码短语创建,并且公钥已添加到托管帐户。SSH密钥存储在典型的位置C:\Users\

设置ssh代理我使用了这里提供的代码(复制并粘贴在下面以供参考)来创建。bashrcC:\Users下的文件\

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代理。在设置ssh代理时,我是否错过了一个步骤,。bashrc脚本和/或GUI以完成删除密码短语提示?还是有别的事情发生了?

非常感谢任何和所有的帮助,提前感谢


共有2个答案

葛修真
2023-03-14

查看我在这里找到的指南,这让我以不同的方式搜索东西。最终告诉我使用Putty及其ssh代理来为我管理密码。

最终偶然发现了这篇文章,他们在文章中讨论了如何让git使用putty的ssh代理。这完全取决于我将GIT_SSH放入指向plink的环境变量中。exe,位于putty的安装文件夹中。

使用此方法时,确实会出现一个错误,我不确定这是否只是我的机器/安装,或者这是否会影响所有人。在本文中,通过在主机中打开putty和ssh,以这种方式生成缓存,解决了这个问题。因为已经有关于这个的帖子了,我将不再深入探讨为什么git不能为我做这一步。

从我上面的问题中还可以看出,我使用的是。bashrc脚本,用于在打开git bash时自动将密钥启动到OpenSSH代理中。由于这种putty方法,此脚本和所有相关文件都被删除。删除文件的简短列表是代理。脚本创建的env,即。保存脚本的bashrc,以及。创建的pash_配置文件

一旦完成,git bash和git gui都成功地使用腻子剂,可以用任何我喜欢的东西。我甚至可以从上下文菜单启动git gui,让它识别ssh键,不再提示密码。

彭骏
2023-03-14
匿名用户

. bashrc在启动Git Bash时运行。这只影响bash环境,但对整个Windows没有任何影响。当您运行GUI时,. bashrc中的所有设置都无效。我在Windows笔记本电脑上使用IntelliJ中的Git集成,但仍然没有弄清楚如何使用SSH密钥。我目前打开Git Bash来拉、推或任何与远程交互的东西。

 类似资料:
  • 因此,我遵循了本教程,学习了如何使用Windows CMD为github设置SSH,在我使用 我在哪里得到的 即使我运行,我也会收到预期的消息,告诉我我已通过身份验证。 在搔了一会儿脑袋之后,我决定在git bash上试试。 我注意到的第一件事是跑步 在git bash中,我得到了但是当我在Windows CMD上运行相同的命令时,我得到了所有的SSH密钥? 因此,在git bash中添加ssh密

  • 问题内容: 我在Linux环境中有一个示例脚本,该脚本基本上针对当前shell运行,向其添加密钥并运行两个git命令: 脚本实际上可以正常工作,但是每次运行脚本时,我都会得到一个新进程,因此我认为这可能会成为性能问题,并且最终可能会导致无用的进程。 输出示例: 此外,还有所有这些,是否有可能找到一个现有进程并将我的密钥添加到其中? 问题答案: 到目前为止,答案似乎并未回答原始问题… 这对我有用:

  • 问题内容: 我正在尝试更新裸git repo作为构建的一部分。在Linux上,它相对简单: 但是我不知道如何在Windows上执行此操作。我试过了: 但是失败了: 我该怎么做? 问题答案: 我在以下位置看到ssh-agent: 你需要确保你的包括(通过执行詹金斯作业的用户可以看到),,。 (由Git安装路径文件夹替换) 执行完一项作业(甚至失败)后,请查找“环境变量”链接:您将确切看到谁在运行作业

  • 我想知道是否有人面临过这个问题。在此之后,我创建了一个个人访问令牌,并赋予了访问令牌的完全回购权限。 我可以通过以下方式克隆回购协议: 可以得到: 如果您需要更多信息,请告诉我。

  • Windows 10用户。我最近第一次安装git,但遇到了一个特殊的问题。我被告知,如果我想在git中使用java,我需要设置环境变量。 我能够为命令提示符正确地更改,但我无法在git bash中显示相同的更改。在命令提示符中键入将返回正确的路径,但在git bash中它将返回。 我进入系统设置并更改了系统变量,以便指向我的jdk。我更新了系统变量和环境变量中的变量,以指向bin和jdk。我关闭并

  • 我生成了一个没有密码的SSH密钥对,并将公钥添加到GitHub。 连接 成功,但当我重命名密钥时,它失败了。 但是当我想推送我的更改时,它仍然会询问我的用户名和密码组合。 有没有办法在没有密码的情况下推送?