【发布时间】:2021-07-02 11:21:02
【问题描述】:
我今天为 windows 安装了 git 并进行了一些测试,我发现每次推送时都会要求我输入密码(这在 Linux 上不会发生)。
我已经对另一个线程提出了一些建议,我发现我没有配置 ssh-agent,但是我这样做了,问题仍然存在。
有什么建议吗?谢谢!
【问题讨论】:
-
您能否详细说明如何您配置了 ssh-agent?
标签: git ssh git-for-windows
我今天为 windows 安装了 git 并进行了一些测试,我发现每次推送时都会要求我输入密码(这在 Linux 上不会发生)。
我已经对另一个线程提出了一些建议,我发现我没有配置 ssh-agent,但是我这样做了,问题仍然存在。
有什么建议吗?谢谢!
【问题讨论】:
标签: git ssh git-for-windows
试试下面
使用 Git bash 而不是 powershell
将您的密钥文件复制到 ~/.ssh
将以下代码粘贴到您的 ~/.profile 或 ~/.bashrc
重启 Git Bash
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 bash 将提示或输入密钥密码,然后无缝运行。脚本还将启动 SSH 代理并使用 ssh-add 添加密钥文件
【讨论】:
我遇到了同样的问题,花了几个小时试图弄清楚为什么 windows 一直要求我输入 ssh 密码,对我有帮助的是来自 https://www.teapotcoder.com/post/how-to-fix-git-ssh-asking-for-password-on-windows-10/
的解决方案打开 PowerShell 并输入命令
Get-Command ssh
如果该输出列出了不在您的 git usr/bin 目录中的可执行文件,则执行以下操作:
git config core.sshCommand (get-command ssh).Source.Replace('\','/')
或者,如果您想在当前的 PowerShell 会话中进行测试,而不会弄乱 Git 配置
$ENV:GIT_SSH_COMMAND = (get-command ssh).Source.Replace('\','/')
为什么会这样?
当你安装 git 时,它会附带 ssh。但是,如果您有较新版本的 Windows 10,Windows 会安装随附的 SSH。安装在 C:\Windows\System32\OpenSSH。将其放入环境 PATH 中并进行测试:
ssh -T git@github.com
使用您通过 ssh-add 使用 Windows 提供的二进制文件添加的密钥。但是 git 正在使用 git usr/bin 文件夹中的 ssh 内容。不同的键集。因此,每次 git pull 时都会提示您输入密码。
【讨论】: