我在使用 Ubuntu,正在学习如何协作使用 Git。
我已经使用以下命令在本地 Ubuntu 桌面上创建了一对公钥/私钥:
ssh-keygen -b 2048
然后我使用以下命令访问我的公钥:
cat /home/user/.ssh/id_rsa.pub
按照我在网上找到的说明,我在 GitHub 上创建了一个存储库,然后转到“设置”并添加了我的公钥。
然后我想做两件事:
1)检查我的身份验证是否与 GitHub 配合良好。我通过输入以下内容来做到这一点:
ssh -T [email protected]
我得到以下输出,我回答“是”
# The authenticity of host 'github.com (xxxx)' can't be established.
# RSA key fingerprint is xxxxx.
# Are you sure you want to continue connecting (yes/no)? Yes
然后我收到一个弹出窗口,上面写着:
An application wants to access the private key "user@ubuntu" but it is locked.
It then asks for a password.
2)执行 Git push 到我新创建的远程存储库。
# First, I connect my local repository to my remote GitHub one (this works)
$ git remote add origin [email protected]:username/repository_name.git
# Next, I try and push my local commits to the repository_name:
$ git push origin master
然后我得到与 1) 中相同的弹出窗口,要求访问我的私钥和密码。
我的问题是:
这是正常的吗?我对公钥/私钥和快速认证的概念很陌生,但我认为我永远不应该分享我的私钥?那么 Git 为什么要求这样做呢?
如果我需要提供它,Git 会要求我输入 Git 密码还是密钥密码(我在制作公钥/私钥时设置的密码)
谢谢
答案1
这是正常的吗?我对公钥/私钥和快速认证的概念很陌生,但我认为我永远不应该分享我的私钥?那么 Git 为什么要求这样做呢?
你永远不应该分享你的私钥。然而,这些应用程序希望你在本地解锁你的私钥,而不是将其发送到另一台计算机。
如果我需要提供它,Git 会要求我输入 Git 密码还是密钥密码(我在制作公钥/私钥时设置的密码)
没有 git 密码。你可能指的是你的 GitHub 密码。
您可以通过 GitHub 帐户的用户名和密码登录。但是,使用公钥身份验证更简单、更好。创建密钥对时,您选择了一个密码。这是您需要输入的密码。您可能只需要在每个会话中执行一次此操作,因为您的 SSH 代理会为您存储它。如果在同一会话中反复提示您输入密码(会话是指您登录计算机和注销之间的时间),您应该将密钥对添加到 SSH 代理中:
ssh-add ~/.ssh/id_rsa
答案2
如果你指的是 Linux 中的私钥链;那么你可能必须输入你在它提示你之前输入的“短语”,就像这样
输入密码再次输入相同的密码: