公开仓库改私有再配置公钥后Git拉取仍需要输入用户名的问题
问题描述·:git拉取私有仓库需要输入用户名和密码
我之前写了一个脚本用来定时自动拉取远程仓库更新本地仓库,后来将这个远程仓库改成私有后执行脚本就会需要输入用户名和密码。
[root@LH2020 ~]# ./sync_repo.sh
正在从远程仓库拉取最新更改…
Username for ‘https://gitee.com’: ^C
原因:
当将仓库设置为私有后,Git 会要求进行身份验证以确保只有授权用户可以访问。如果已经配置了 SSH 公钥,但是 Git 仍然提示你输入用户名和密码,这可能是因为你的远程仓库的 URL 仍然是 HTTPS 格式的,而不是 SSH 格式的。
解决步骤:
-
检查远程仓库 URL:
打开终端,进入你的 Git 仓库目录,然后运行以下命令来查看当前的远程仓库 URL:git remote -v
如果 URL 是以
https://
开头的,你需要将其更改为 SSH 格式。 -
更改远程仓库 URL:
使用以下命令将远程仓库的 URL 从 HTTPS 格式更改为 SSH 格式:git remote set-url origin git@gitee.com:username/repo.git
其中
username
是你的 Gitee 用户名,repo
是你的仓库名。 -
添加 SSH 密钥到 Gitee:
确保你的公钥已经添加到了 Gitee 的 SSH 密钥列表中。你可以在 Gitee 的个人设置页面找到 SSH 密钥的添加和管理选项。 -
测试 SSH 连接:
使用以下命令测试 SSH 连接是否成功:ssh -T git@gitee.com
如果连接成功,你将看到一条欢迎信息。 例如:
[root@LH2020 resume-2]# ssh -T git@gitee.com
The authenticity of host 'gitee.com (180.76.198.225)' can't be established.
...
...
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,180.76.198.225' (ECDSA) to the list of known hosts.
Hi **(@******)! You've successfully authenticated, but GITEE.COM does not provide shell access.
- 重新拉取仓库:
现在,再次运行git pull
或git push
时,Git 应该会使用 SSH 密钥进行身份验证,而不再提示你输入用户名和密码。
如果已经按照上述步骤操作,但问题仍然存在,可能需要检查你的 SSH 密钥是否正确配置,或者是否有其他网络或权限问题。