为什么git pull不能用git-credentials当凭证助手设置为存储SSH远程存储库时

m4pnthwp  于 2023-04-28  发布在  Git
关注(0)|答案(1)|浏览(124)

我试图在我的Ubuntu机器上遵循git-credentials文档(per https://git-scm.com/docs/git-credential)来设置一个测试,其中用户决定为他们的git存储库保存凭据,而不是每次都输入。我正在尝试测试一个基于libgit 2的git插件,但我甚至无法使用正常的git命令行来运行我的测试环境。就我个人而言,我总是使用SSH凭据,但我想测试一下这个场景。
为了准备这个测试,我设置了一个带有SSH服务器和一个需要密码的帐户的虚拟机,我的远程git存储库就是在这个虚拟机上创建的。
在我的客户端机器上,我做了:git config --global credential.helper store
在选中-那个命令更新了我的全局~/。gitconfig包含以下行:
... [credential] helper = store
当我执行git pull命令时,它提示输入我的密码,我输入,it,但它从不将凭据存储在~/中。git-credentials。
当我再次执行'git pull'命令时,它只会再次提示。
它的行为就像是有一些东西未被“激活”,以便'git pull'使用凭据存储。
如果我手动执行'git credentials approve',它会更新~/。git-credentials,当我执行'git credential fill'时,它会检索内容,但'git pull'命令不会。
很明显,我错过了一些东西(最有可能),或者有一个bug(最不可能)。
我用的是Ubuntu 22。04.2 LTS(i.e. jammy)。git版本是:2.34.1
大多数关于git凭据的文档都是使用HTTP的,不支持SSH吗?
我希望'git pull'最初会提示并获取用作这个仓库远程源的ssh帐户的密码,然后将其存储在~/中。git-credentials。在第二次使用'git pull'时,我希望它能在~/中找到保存的凭据。git-credentials并成功使用它们。

3vpjnl9f

3vpjnl9f1#

Git凭据仅适用于HTTP(S)。要使用Git凭据,将协议切换为HTTPS:git remote set-url origin https://user@host/path/to/repo(服务器必须支持HTTP访问和身份验证)。
对于SSH,使用公钥身份验证:创建一个密钥对(使用ssh-keygen),上传公钥到服务器(对于常规的Unix服务器使用ssh-copy-id,对于使用web接口或API的Git托管上传),使用ssh user@sever测试无密码登录(对于Git托管使用ssh git@server),使用git ls-remote user@host:/pat/to/repo测试Git。

相关问题