推送/拉取前需要输入git密码

4
我们公司使用git作为源代码控制工具,在我的电脑上,我可以在不输入密码的情况下推送和拉取到服务器,但是我的一个同事却需要反复输入密码,这非常烦人。请问有人知道如何解决吗?
提前感谢。
编辑: 我们没有使用Github,并且我们已经在.git用户主目录中的.ssh文件夹的authorized_keys文件中拥有了所有用户的ssh公钥。对于我的电脑,我没有做任何特殊处理,只是像其他电脑一样添加了ssh密钥,但我是唯一一个不需要反复输入密码的人。
4个回答

3

这取决于它是要求密码还是口令。我猜测应该是后者。在这种情况下,它意味着用于身份验证的密钥对是使用口令创建的。如果该密钥对没有用于其他任何事情,那么只需生成另一个并使用其覆盖即可。

ssh-keygen

接下来按Enter键三次。如果您不想覆盖现有内容,请告诉我,我会告诉您相关选项。

然后,无论是要求密码还是密语,您都需要将新密钥对的公共部分(位于~/.ssh/id_rsa.pub)添加到您正在尝试推送的git服务器上。如果它是一个gitosis或gitolite服务器(很可能是),则您必须将公钥交给具有管理员权限的人,以便他们将其添加到服务器中。如果它只是一个普通的Linux框,上面有一个正常的git repo(可能不是),您可以使用

ssh-copy-id user@host

这次它会要求输入密码,但以后就不会再要求了。

这应该涵盖了最可能的情况。如果似乎还有其他问题,请给我更多细节,我应该能够帮助您解决。


谢谢您的解释。我想创建一个自动化脚本,每小时推送一次,但是因为我在创建密钥时不断输入密码短语,所以无法弄清楚这个问题。 - Kuberchaun

3

这可能是在生成id_rsa密钥对时设置密码完成的。关于如何设置密码,github上有一些文档可以参考。如果您想去除密码并更新密钥对,请执行以下命令。

cd ~/.ssh
ssh-keygen -t rsa -C "youremail@example.com"

生成密钥时,如果提示输入密码,请将其留空并按回车键即可。

他从未说过他在使用GitHub。 - citizen conn
8
即使你的托管平台不在GitHub上,GitHub也有很好的SSH文档。 - dahlbyk
我没有使用Github,而是在我们的服务器上进行了设置。 - marchinram
2
@marchinram,所涉及的 Github 文档非常通用。 - Nathan

2
另一个选择是将密码保留在您的密钥上,但使用 ssh-agent 在会话期间存储密码。

0

您需要将他的公钥添加到authorized_keys文件中,该文件位于git用户的~/.ssh/authorized_keys文件中。

  1. 确保他已经创建了一个ssh-key文件
  2. scp git_user@servername:~ id_rsa.pub
  3. 以git用户身份登录服务器:ssh git_user@servername并输入密码。
  4. cat id_rsa.pub >> authorized_keys

这将把他的密钥添加到授权密钥中,他就不必输入密码了。


他的ssh密钥已经在那个文件中了,如果不是这样,他根本无法登录。问题在于每次他执行pull/push操作时,系统总是提示他输入密码,而对我来说却没有这个问题。 - marchinram
这不是真的。如果你有凭据,你可以SSH到任何安装了SSH的服务器。 - citizen conn
好的,我的意思是我已经按照你说的做了,但它仍然要求输入密码。 - marchinram
很奇怪,我和一个同事遇到了同样的问题,我们在服务器上更新了他的密钥,然后它就可以工作了...你有比较过他在.gitconfig中的远程设置和你的吗?也许存在一些差异... - citizen conn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接