报错环境
- win10
- Jenkins2.414.3
- 在Jenkins环境中github插件的ssh私钥配置正确且本地cmd中clone无问题,但Jenkins报错:“No ECDSA host key is known for github.com and you have requested str”
解决思路
“Dashboard”——>>“Manage Jenkiens”——>>“Security”——>>“Git Host Key Verification Configuration” 选择为“Accept first connection”项
报错原因
Jenkins有自己的ssh的known_hosts配置环境,所以获取不到本地的/user/.ssh/known_hosts文件故,报错如下:
将其改为“Accept first connection”策略默认jenkins接受第一次的连接认证(注:水平有限没找到jenkins的hosts文件在哪。。。)
备注
- 不知道怎么查看github的多个ssh公钥对应的哪个客户端电脑,可以在客户端的git bash中的shell中执行“ssh-keygen -if /users/.ssh/id_rsa.pub”查看输出结果进行对比github上的sha256的公钥(“/users/.ssh/id_rsa.pub”为自己的路径)
- SSH(Secure Shell)的known_hosts文件是客户端系统中用于存储远程主机公钥指纹的一个安全验证文件。当用户通过SSH首次连接到一个远程服务器时,SSH客户端会接收并记录下远程主机的公钥信息到本地用户的~/.ssh/known_hosts文件中(在Linux和类Unix系统中通常是这个路径;而在Windows系统中,通常位于 %USERPROFILE%.ssh\known_hosts)。
这个文件的作用主要包括:
身份验证:每次后续连接该远程主机时,SSH客户端都会比对远程主机发送过来的公钥与known_hosts文件中的记录是否一致。如果一致,则认为连接的是同一台已知且可信的主机,从而避免了中间人攻击(MITM),即恶意第三方伪装成合法服务器的可能性。
安全性:通过公钥认证机制,确保用户只连接到之前确认过的远程主机,提高了SSH连接的安全性。
信任管理:管理员可以使用这个文件来集中管理可信任的远程主机密钥,例如,在多台机器上批量部署时,可以通过复制或配置统一的known_hosts文件来预先信任特定的远程服务器。
当远程主机的公钥发生更改(如服务器重装、更换密钥对等场景)时,已保存在known_hosts文件中的旧公钥信息将不再匹配,此时SSH客户端会拒绝连接,并提示用户确认新的公钥信息。若确实需要接受新公钥,用户可以选择更新known_hosts文件中的相应记录或者删除与该主机相关的旧记录。(来自通义千问)