github - 尽管提供了有效的密钥,但 SSH 身份验证失败并显示“主机密钥验证失败”
问题描述
在 Azure DevOps Pipelines 中,我想通过 SSH 连接到具有依赖项的私有存储库。我收到以下错误:
主机密钥验证失败。致命:无法从远程存储库中读取。
尽管将私钥上传到安全文件,但在项目变量中设置了公钥。
见下文
steps:
- task: InstallSSHKey@0
inputs:
hostName: $(hostname)
sshPublicKey: $(testkey.pub)
sshPassphrase: $(passphrase)
sshKeySecureFile: testkey
- script: |
git clone git@github.xxxxxx.com:xxxx/xxxxx.git
displayName: 'clone repo'
解决方案
主机密钥验证失败
这不是指您尝试用于连接的 SSH 密钥。它指的是服务器的SSH公钥指纹。这是您第一次连接到新机器时看到(并且应该检查)的内容。
验证主机密钥指纹可防止中间人攻击,其中恶意第三方可能位于您和您的目标服务器之间,在观察或修改所述通信时来回传递通信。Azure 文档也讨论了这一点。
手动 SSH 到机器一次,检查指纹是否符合您的预期,然后接受。除非指纹发生变化,否则后续连接应该可以工作。
推荐阅读
- django - 返回相关字段但在 Django Viewset 中过滤
- python - 过滤具有特定字符的字符串列
- elasticsearch - 如何使用 Vega-Lite 仅绘制最新时间的文档?
- python - 为什么我们应该在 Comment 模型中使用 parent?
- spring-mvc - 无法解决 IntelliJ IDEA 中的类或包错误
- laravel - [Route: listele] [URI: {language}/{slug}] 缺少必需的参数
- linux - 如何从主机修改 KVM 来宾 VM 的内核数据结构?
- javascript - 错误:找不到模块“配置”:Javascript,模块位于同一文件夹目录中
- adb - adb,在启动命令之前冻结屏幕
- javascript - 为什么我不能将数组与类列表一起使用?