Git不断提示我input密码
我已经使用Git了一段时间,但不断的要求input密码正在开始把我推上墙。
我正在使用OSX和Github,并且按照GitHub的Set Up Git页面的指示设置了Git和SSH密钥。 我还在GitHub的SSH密钥密码页面中提到了github SSH密钥到我的Mac OSX钥匙串。 我的公钥是用Git注册的。
不过,每次我尝试拉扯,我必须input我的用户名和密码。 除了需要为此设置的SSH密钥,还有其他的东西吗?
我想你可能有错误的git repo url。
打开.git/config
并find[remote“origin”]部分。 确保你使用的是SSH
:
ssh://git@github.com/username/repo.git
而不是https
或git
:
https://github.com/username/repo.git git://github.com/username/repo.git
您现在可以使用SSH Key
而不是username
和password
。
[编辑:]如果Git抱怨'origin' has already been added
了'origin' has already been added
,打开.config
文件并在[remote origin]
之后编辑url = "..."
configurationcredential.helper
在OS X上(现在是macOS)在terminal中运行
git config --global credential.helper osxkeychain
它使git能够使用Keychain.app来存储用户名和密码,并从钥匙串中检索你私钥的密钥。
对于Windows使用:
git config --global credential.helper wincred
故障排除
如果git凭证助手configuration正确,macOS会将密钥保存在keychain中。 有时, ssh和钥匙串中存储的密码之间的连接可能会中断。 运行ssh-add -K
或者ssh-add ~/.ssh/id_rsa
再次将key添加到keychain。
macOS 10.12 Sierra变更为ssh
对于macOS 10.12 Sierra ssh-add -K
需要在每次重新启动后运行。 为了避免这种情况,用这个内容创build~/.ssh/config
。
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
从10.12.2的ssh_config
man
页:
UseKeychain
在macOS上,指定系统在尝试使用特定密钥时是否应在用户的钥匙串中search密码短语。 当用户提供密码短语时,该选项还指定密码短语是否应该存储到密钥链中,一旦经过validation是正确的。 争论必须是“是”或“否”。 默认是“否”。
苹果已经增加了Technote 2449解释发生了什么。
在macOS Sierra之前,ssh会提供一个对话框,询问您的密码,并提供将其存储到钥匙串中的选项。 这个用户界面在不久前被弃用,并被删除。
我升级到macOS Sierra时发生在我身上。 看起来像升级ssh代理清除。
$ ssh-add -L The agent has no identities.
简单地运行ssh-add
find我现有的身份,input密码,然后再次进入。
使用这个:用合适的主机名replacegithub.com
git remote set-url origin git@github.com:user/repo.git
正如其他人所说,你可以安装一个密码caching助手。 我主要是想发布其他平台的链接,而不仅仅是mac。 我正在运行一个Linux服务器,这是有帮助的: https : //help.github.com/articles/caching-your-github-password-in-git/#platform-linux
对于mac:
git credential-osxkeychain
视窗:
git config --global credential.helper wincred
Linux的:
git config --global credential.helper cache git config --global credential.helper 'cache --timeout=3600' # Set the cache to timeout after 1 hour (setting is in seconds)
指导git在Windows和Github使用SSH推/拉http://nathanj.github.io/gitguide/tour.html
- 下载并安装腻子
- 设置环境variables'GIT_SSH'='path \ to \ plink.exe'(在已安装的putty文件夹中) – 非常重要!
- RESTART WINDOWS EXPLORER Envvariables生效(不仅可以重新启动命令提示符)
- 运行puttygen.exe生成新密钥,将PUBLIC密钥复制到Github站点
- 将这个新的PRIVATE键保存在磁盘上的某个安全的地方(最好不要使用dropbox)
- 运行putty.exe并将SSH连接到github.co
- 通过运行“shell:startup”快速启动文件夹。 8通过浏览器使你的私钥启动。 在启动文件夹中创build一个语法为“path \ to \ pageant.exe”“path \ to \ privatekey”的快捷方式
- 我们不需要在我们的仓库的.git / config里设置'puttykeyfile'设置
- 非常重要的是使用Github的“SSH克隆URL”而不是Https
在git 1.7.9+的窗口中,在命令提示符下运行以下命令,在文本编辑器中打开configuration文件:
git config --global --edit
然后在文件中添加下面的块,如果不存在或相应地编辑它
[credential "https://giturl.com"] username = <user id> helper = wincred
保存并closures文件。 上述变更后,您只需要提供一次crendentials。
我想你解决了你的问题,但是我没有看到这个帮助我的解决scheme,所以在这里。
inputterminal:
echo "" > ~/.ssh/known_hosts
这将清空您的known_hosts
文件,您将不得不添加您使用和连接的每个主机,但它解决了问题。
orkoden关于在你的terminal上使用git的钥匙串的答案是不完整的,并引发了错误。 这是你必须做的,以保存你在钥匙链terminalinput的用户名和密码:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain sudo mv git-credential-osxkeychain /usr/local/bin sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
然后input
git config --global credential.helper osxkeychain
如果你已经在curl之前用git config完成了这个部分,那没问题,它会工作的
正如上面所说的static_rtti,改变
https://github.com/username/repo.git git://github.com/username/repo.git
至
ssh://git@github.com/username/repo.git
我自己把.git / config文件中的https改成了ssh,但是仍然没有工作。 然后我看到你必须把github.com改成git@github.com。 获得实际正确url的一个好方法就是进入你的项目页面并点击它
将HTTPS更改为SSH以获取正确的URL
然后将此URL添加到configuration文件。
第一步:检查你的当前configuration
cat .git/config
你会得到:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/path_to_your_git.git fetch = +refs/heads/*:refs/remotes/origin/* [user] name = your_username email = your_email [branch "master-staging"] remote = origin merge = refs/heads/master-staging
第二步:删除你的远程起源
git remote rm origin
第三步:添加远程用户名和密码
git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git
我同意“codehugger”,并使用“orkoden”的指令为我工作 – 在netbeans 7.3 – 当你右键单击文件并select上下文菜单 – 推 – 打开“推到远程”窗口 – 有2选项在这里
-
origin:https://github.com/myaccount/myproject.git/
-
https://github.com/myaccount/myproject.git/
正如你可以看到的差异是在url的原始参数 – 你不想select这个选项(1)你想检查选项(2),这对我来说工作得很好。 我希望这可以帮助别人。
粪勒。
git config credential.helper store
注意:虽然这很方便,但Git会将您的凭证以明文方式存储在项目目录下的本地文件(.git-credentials)中(请参阅下面的“主目录”)。 如果你不喜欢这个,删除这个文件并切换到使用caching选项。
如果您希望Git每次需要连接到远程存储库时都继续询问您的凭据,则可以运行以下命令:
git config --unset credential.helper
要将.git凭证中的密码存储在您的%HOME%目录中,而不是项目目录中,请使用–global标志
git config --global credential.helper store
找谁来问你密码。 是git还是你的SSH代理?
在我的情况下,每次我做了git pull
它是问我:
Enter passphrase for key '/work/username/.ssh/id_rsa':
所以我认为这是git要求密码。 所以我一直在寻找解决办法,后来才意识到我的SSH代理已经closures了。 这可以解决这里给出的。
这是我犯的一个非常愚蠢的错误,但把它张贴在这里,以防万一,像我一样,帮助别人省下一些时间从错误的树上咆哮。
根据您的configuration有不同的authentication。 这里有几个:
-
git credential-osxkeychain
。如果您的凭证无效,请通过以下方式将其删除:
git credential-osxkeychain erase
要么:
printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
所以git不会再要求你获得钥匙串许可。 然后再configuration一次。
请参阅: 从 GitHub上的OSX钥匙串更新凭证
-
您的SSH RSA密钥。
为此,您需要将您的SSH密钥与您添加的密钥进行比较,如果您使用的是正确的身份,请通过
ssh-add -L
/ssh-add -l
进行检查。 -
您的HTTPS身份validation(如果您使用
https
而不是ssh
协议)。使用
~/.netrc
(Windows的%HOME%/_netrc
)来提供你的证书,例如machine stash1.mycompany.com login myusername password mypassword
了解更多信息: 与 SO 同步GitHub
在使用github的密钥之前,请按照教程中的步骤testingSSH连接 :
$ ssh -T git@github.com # Attempts to ssh to GitHub
在URL中input错误将会让git询问你的用户名和密码,愚蠢的混帐
在Linux Kali,Git 2.7.0版上testing
尝试:
git clone https://github.com/thisrepodoesntexists/doesntexists.git
使用以下命令增加超时时间,以便您可以重新input密码一段时间
git config --global credential.helper 'cache --timeout 3600'
我用它的Bitbucket和Github它都适用。 只有你需要做的是3600
是在几秒钟内,增加它到你想要的程度。我把它改为259200
这是大约30天。 这样我每30天左右重新input一次密码。