为什么在git clone时要求输入密码?

3

当我在Mac上运行时,一切正常:

git clone git@test.test-project.com:my_project

当我在家中运行它并将我的家庭id_rsa.pub密钥复制到authorized_keys的ssh项目中时,ssh连接是正常的,但克隆git仓库需要密码,为什么?
完整重现步骤:
git config --global user.name 'User Surname'
git config --global user.email 'user@email.com'
ls -al ~/.ssh # shows nothing 
ssh-keygen -t rsa -C "user@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

将id_rsa.pub文件从剪贴板复制到github账户中:settings -> ssh keys -> 添加并按回车键,添加成功。
ssh -T git@github.com

你好用户!您已成功验证,但GitHub不提供shell访问权限。 请将相同的id_rsa.pub粘贴到evernote中。

从我的工作Mac电脑上,从evernote中复制它,并连接到ssh:

ssh portal@my-server.com
ee ~/.ssh/authorized_keys

将evernote中的id_rsa复制到文件末尾并保存文件。
cd my-rails-app/repo
git ls-remote

从标准输出中复制第一行的一部分:

来自 git@test.test-project.com:my_project

在家里的华硕电脑上连接到ssh。

ssh portal@my-server.com

一切都好

,这段内容与IT技术相关。
git clone git@test.test-project.com:my_project

-> 必须输入密码


你运行的确切步骤序列是什么? - Anshul Goyal
我在上面的主要问题中添加了完整的重现步骤。 - user1028432
我遇到了这个问题,因为我安装的一个程序改变了~/.ssh的默认位置。你可以在Git Bash中运行命令ssh-keygen来查看。如果你的默认位置不是/c/Users/<your user name>/.ssh/id_rsa,那么你应该查看环境变量,看看是否有某个变量正在改变.ssh的位置。 - Ovidiu Uşvat
1个回答

3
当ssh密钥配置不正确时,git clone "git@{host}" 尝试以用户 "git" 的身份连接到 {host},因此会请求密码。因此,您需要解决ssh密钥问题。
您的工作/ Mac /家用计算机的用户名是否不同?您是否使用gitolite、gitlab等?ssh.pub在git中如何配置?
请注意,如果 (1) "当我在我的Mac上运行时,一切正常",那么 (2) "在家里运行并将我的home id-rsa pub key复制到authorized-keys的ssh项目中",这对于git来说是没有意义的。您只启用了“您”的ssh登录,而不是“git”的ssh登录。最简单的解决方案是将您的私有ssh密钥“从您的Mac”复制到您的“家庭”计算机的~/.ssh目录中。否则,您只需要将您的家庭计算机添加到您的git服务器配置中作为新用户。

我认为复制我的私钥不是一个好主意。我在github和工作的ssh服务器上使用相同的id_rsa.pub,这会有影响吗? - user1028432
我在上面添加了重现步骤,请查看。 - user1028432
1
@user1028432 "复制我的私钥不是一个好主意" => 这是你的密钥,就像两个主机一样(大概)。但如果你不想这样做,那就创建另一个独立的公/私钥对。对我来说很明显(除非我漏掉了什么),如果你有:(1)一个公/私钥对;(2)客户端 "a"(带有私钥)和 "b"(没有私钥),以及 Git 服务器 "c"(带有公钥);那么 "a" 可以访问 "c",但 "b" 不行——除非你将私钥复制到主机 "b" 上。"我在 GitHub 和 SSH 服务器上使用相同的 id_rsa.pub,会有问题吗?" 或许使用不同的密钥可以帮助解决问题。 - michael

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