最近,我在 Linux 系统上遇到了无法提交到我自己的 GitHub 存储库的问题。当我尝试这样做时,我得到的是:
my prompt: > git push --verbose
Pushing to https://github.com/MyUsername/my-repository.git
info: please complete authentication in your browser...
fatal: The SSL connection could not be established, see inner exception.
fatal: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
Username for 'https://github.com':
Password for 'https://github.com':
remote: No anonymous write access.
fatal: Authentication failed for 'https://github.com/MyUsername/my-repository.git/'
发生的事情是,我得到一个窗口,要求我登录 github(通过 Web 界面),我照做了,在浏览器中得到页面“授权成功,返回到您的应用程序” - 并且在我的应用程序中我显然可以看到我的机器不信任 github。出于某种原因。
我怎样才能说服它确实可以与 github 建立安全连接?
如果这很重要,我的系统是 Linux Mint。
答案1
就我个人而言,使用 SSH 进行 Git 连接的体验比 HTTPS 更好。
为此,您应该创建一个新的 SSH 密钥,最好用密码保护。密钥对由公钥和私钥组成。
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/github
- 公钥文件:
~/.ssh/github.pub
- 私钥文件:
~/.ssh/github
- 公钥文件:
您现在可以在GitHub 设置点击“新 SSH 密钥”。
cat ~/.ssh/github.pub
之后您必须将新来源添加到您的存储库。
git remote add origin ssh://[email protected]:MyUsername/my-repository.git
通过使用带密钥的 SSH,您不再需要通过浏览器授权 HTTPS 会话。这样您至少可以解决错误。
答案2
您可能需要更新您的根证书存储库。
如果您正在使用 MITM 代理或者拥有自签名或未知证书,请检索签名证书并使用 指向它sslCAInfo
。