使用SSH

使用SSH
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = [email protected]
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

现在我想将我的 git 凭据放入 github、gitlab 和 gitorious,这样每次我就不必在浏览器上查找凭据。如何做到这一点才能自动化?

我正在运行 zsh

答案1

使用SSH

处理 git 身份验证的常见方法是将其委托给 SSH。通常,您在远程存储库中设置 SSH 公钥(例如 在 GitHub 上),然后每当需要进行身份验证时都可以使用它。当然,您可以使用密钥代理,由桌面环境处理或使用 和 手动ssh-agent处理ssh-add

为了避免指定用户名,您也可以在 SSH 中进行配置,在~/.ssh/config;例如我有

Host git.opendaylight.org
  User skitt

然后我可以使用克隆

git clone ssh://git.opendaylight.org:29418/aaa

(注意那里没有用户名)。

使用gitcredentials

如果 SSH 方法不适用(例如你正在使用通过 HTTPS 访问的存储库),git 确实有自己的处理凭据的方式,使用gitcredentials(并且通常git-credential-store)。您使用指定您的用户名

git config credential.${remote}.username yourusername

和凭证助手使用

git config credential.helper store

(指定--global您是否想在任何地方使用此设置)。

然后,当您第一次访问存储库时,git 将询问您的密码,并将其存储(默认情况下~/.git-credentials)。后续访问存储库将使用存储的密码,而不是询问您。

警告:这确实会将您的凭据纯文本存储在您的主目录中。因此,除非您了解这意味着什么并且对风险感到满意,否则这是不可取的。

答案2

对于那些后来发现这一点的人——我在这方面遇到了困难,但最终成功了

https/credentials.helper/Ubuntu

  1. 全局取消设置:
    git config --global --unset credentials.helper
  2. 本地取消设置:(在每个存储库中) git config --unset credential.helper
  3. 为每个存储库创建凭证文件:(在每个存储库内)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

并不是说这是最好的方法或唯一的方法 - 但在几个令人沮丧的小时后它对我有用。

答案3

您很可能在 github 中拥有另一个包含这些 SSH 密钥的帐户。如果是这样的话:

  1. 从 github 注销
  2. 使用另一个帐户登录
  3. 删除 SSH 密钥
  4. 从 github 注销
  5. 使用您想要的用户登录
  6. 将 SSH 密钥分配给所需的用户
  7. 再次尝试 git 命令,例如“git push”

相关内容