在 Win10 上使用 Git,遇到一个奇怪的问题,ssh -T git@gitee.com 正常,git clone xxx.git 失败,不得其解。

具体如下:

~$ ssh -T git@gitee.com
Hi lzimd! You've successfully authenticated, but GITEE.COM does not provide shell access.

~$ git clone git@gitee.com:xxx/xxxxxx.git
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

排查

网上搜到一贴(sinat_42483341),指出失败的原因可能是 SSH-RSA key 签名算法协商失败。

经排查,使用的 SSH 包为 C:\Windows\System32\OpenSSH 包,版本为 OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2,git 包为 git-for-windows 2.33.1.windows.1,其内置的 ssh 为 OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021

变化是,OpenSSH 8.8 默认禁用 ssh-rsa.

而 GitHub 协商的算法为 rsa-sha2-512,顺利通过。

# gitee
host key algorithms: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ssh-ed25519
# github
server-sig-algs=<ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ssh-dss>

解决方法

  1. 使用 ECDSA 或 Ed25519。ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 临时,PubkeyAcceptedKeyTypes +ssh-rsa

参考

补充

撞上 pipenv 2021.11.5.post0 的 bug,记录一下。


Related Posts


Published

git

  • Part 1: GIT 使用问题一则

Category

windows

Tags

Contact