如何阻止 github 总是询问用户名/密码?

如何阻止 github 总是询问用户名/密码?

我的密钥位于~/.ssh/其他计算机上,我可以从相关存储库中推送和拉取。
为什么在一台计算机上我总是需要输入我的 github 用户名/密码,而在其他计算机上则不需要?

我可以改变什么来避免这种情况并使用我的 ssh 密钥来代替?

答案1

最简单的方法是创建一个~/.netrc包含以下内容的文件:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(如下所示: https://gist.github.com/ahoward/2885020

您甚至可以关闭此文件的权限,这样就没有人可以通过键入以下内容读取您的密码:

chmod 600 ~/.netrc

答案2

这可以通过将身份验证协议方法从 https 更改为 ssh 来更改

一种选择是重命名或删除现有存储库,然后使用不同的方法“重新克隆”。因此,在mving 或rm -ring 当前存储库之后,克隆命令将类似于

git clone [email protected]:user_name/repo_name.git

您可以使用以下命令查看两种方法的差异git config -l

对于 https:

...
remote.origin.url=https://github.com/user_name/repo_name.git
...

对于 SSH

...
[email protected]:user_name/repo_name.git
branch.master.rebase=true  # This was also created in the ssh method

...

.git/config您可以看到每个存储库的文件中的差异:

请注意下面“url”的更改。再加rebase = true上ssh中的添加

http

[core]
  repositoryformatversion = 0 
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = https://github.com/user_name/repo_name.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

SSH

[core]
  repositoryformatversion = 0 
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = [email protected]:user_name/repo_name.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master
  rebase = true

因此,如果您只想更改身份验证方法而不“重新克隆”整个存储库,您只需编辑项目.git/config并更改

  url = [email protected]_name/repo_name.git

  url = https://github.com/user_name/repo_name.git

加加

rebase = true

在底部的“ [branch "master"]”部分

答案3

您没有指定是否确定您已经在与 github 连接中使用 ssh。很可能在你的其他机器上,github 凭证存储在你不知道的缓存中的某个位置(这是我从 macos/unix 切换到 Linux 系统时的情况)

使用 ssh 类型设置远程。您可以使用以下命令检查 url 类型

git remote -v

您可以更改远程存储库的 url,以便使用 ssh 而不是 https。

而不是 html 网址 https://github.com/username/repo_name

使用 .git 类型 url [电子邮件受保护]:用户名/repo_name.git

使用进行更改

git remote set-url <your_branch_name> <url>

相关内容