几天前,我使用的 Git 服务器(使用 Gitlab)进行了一些更改,然后停机了一段时间。我相信他们把它移到了另一台机器上。我使用 SmartGit 访问并使用 SSH 密钥进行身份验证。我收到了有关 SSH 指纹更改的警告,因此我进入并清除了已知主机文件。但是,当我尝试拉取时,我也开始收到“可用身份验证方法已用尽”错误。我更新了我的 SSH 密钥,但没有任何运气。使用当前的 SSH 密钥通过 Gitbash 使用 Git 效果很好。我尝试完全卸载并重新安装 SmartGit(包括清除 appdata 文件夹),我认为它不使用 Windows 注册表,但我仍然收到错误。我知道错误来自 SSH。我知道我的 SmartGit 不是当前版本,因为我的升级支持去年用完了。
目前,通过 GitBash 在命令行上使用 Git 可以使用我当前的 SSH 密钥。除了与远程服务器交互外,SmartGit 仍可正常工作,因此我现在一直在切换工具来完成工作。
有什么建议么?
答案1
我也在寻找适合自己的解决方案。这与 OpenSSH 的最新变化有关,其中 PubkeyAcceptedAlgorithms 不再包含 ssh-rsa 算法。较旧的 ssh 密钥通常是使用该加密创建的。其中包括我多年来一直使用的密钥,显然 SmartGit 没有传递正确的参数来强制 SSH 客户端接受它们。
目前还不确定如何正确解决这个问题,但是通过跟踪我的 Gitea 服务器的日志,至少我明白了为什么我可以使用我的系统 SSH 通过命令行登录,但 SmartGit 却因“可用的身份验证方法用尽”错误而失败。
我发现一件事确实有效是转到编辑->首选项->身份验证并将单选按钮更改为Use system SSH client
,并确保您的系统客户端具有C:\Users\<username>\.ssh\config
如下配置的文件:
Host your-ssh-domain.com
HostName your-ssh-domain.com
Port 22
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/your-ssh-key.priv.pem
当 SmartGit 使用系统 SSH 时,它会获取您的 SSH 密钥并顺利连接。我更喜欢使用内部密钥,但目前,这个密钥有效。