如何在 Linux 上的 Git Credential Manager 中设置凭据?

问题描述 投票:0回答:2

我刚开始使用 Gitlab。我的工作场所最近从本地 Git 转移到基于云的 Gitlab 主机。我过去在本地使用 ssh 身份验证,因此无需处理

.git/config
~/.gitconfig
中悬挂的凭据(我使用的是 Linux)。

如果我让

git
管理我的凭证/令牌,无论它使用什么默认值,这些凭证/令牌最终都会以明文形式存储在我的主目录中的
~/.git-credentials
下或
.git/config
文件中,这由于各种原因而存在问题.

我四处寻找,发现了Git Credential Manager Core,但是在安装它之后,如README所示,我不确定它是否正常工作,或者我误解了如何使用它。我运行这些命令来进行设置:

  • dpkg -i gcm-linux_amd64.2.0.785.deb
  • git-credential-manager-core configure
  • git config --global credential.credentialStore gpg
  • pass init <gpg-id>

我尝试使用个人访问令牌克隆基于云的存储库,但是当我克隆它时,

gpg
提示我输入密码,但令牌最终会出现在
.git/config file
中。

$ git clone https://user-test-token:[email protected]/my.username/my-repo.git
$ cat .git/config
...
[remote "origin"]
        url = https://user-test-token:[email protected]/my.username/my-repo.git
...

我做错了什么?

git git-credential-manager
2个回答
4
投票

在 git clone 命令中,您将个人访问令牌插入到远程 URL 中。这是不安全的,并且会阻止 Git 调用任何配置的凭据助手。相反,您应该使用未经修饰的远程 URL 进行克隆。

接下来,Git Credential Manager 仅支持开箱即用的 gitlab.com (请参阅 GitLab 问题 #374172)。要与其他 GitLab 实例(例如

gitlab.example.com
)一起使用,请按照 https://github.com/git-ecosystem/git-credential-manager/blob/main/docs/gitlab.md 中的说明进行操作。


就其价值而言,您可能会发现使用git-credential-oauth更容易,它包含在许多Linux发行版中,包括FedoraDebianUbuntu


2
投票

检查这是否是TTY 问题

如果您在无头/仅 TTY 环境中使用 gpg 凭证存储,则必须确保已使用适合终端的 PIN 输入程序(例如

gpg-agent
pinentry-tty)配置 GPG 代理 (
pinentry-curses
) 
.

如果您没有通过 SSH 连接,或者没有设置

SSH_TTY
环境变量,则必须在运行 GCM 之前设置
GPG_TTY
环境变量。
最简单的方法是将以下内容添加到您的个人资料中(
~/.bashrc
~/.profile
等):

export GPG_TTY=$(tty) 
© www.soinside.com 2019 - 2024. All rights reserved.