Host key verification failed 问题解决

本文介绍了解决SSH连接时出现Hostkeyverificationfailed错误的方法,包括清除已知主机列表中的条目、直接修改known_hosts文件及调整SSH配置文件中的StrictHostKeyChecking参数。

一、发现问题:

出现问题的截图:

出现问题的原因:

        环境经过重装后,系统重置;相当于首次访问当前环境。A通过ssh登陆(scp的传输第一步就是进行ssh的登录动作,然后再基于ssh协议进行文件的传输,传输过程加密。scp的登录过程是基于ssh协议)B时提示 Host key verification failed。A的known_hosts文件中记录的B的公钥1 与 连接时B传过来的公钥2不匹配。

二、解决问题:

1.方法1:

ssh-keygen -R 你需要访问的环境IP

如图:

方法2:

直接在known_hosts中对相关IP的RSA信息进行删除操作

vi ~/.ssh/known_hosts

删除对应ip的相关rsa信息

方法3:

SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下,StrictHostKeyChecking=ask。

编辑对应host的ssh配置文件,vi ~/.ssh/config:将安全版本设置为最低,在相对安全的内网环境使用。

StrictHostKeyChecking no

UserKnownHostsFile /dev/null 

### 解决 `sudo scp -p` 命令执行时出现的 `Host key verification failed` 错误 在使用 `scp` 命令进行远程文件复制时,如果出现 `Host key verification failed` 错误,通常是由于目标主机的 SSH 公钥未被当前用户的 `known_hosts` 文件所信任,或者 Jenkins 用户的环境配置存在问题。 #### 1. 检查并添加目标主机的 SSH 公钥到 `known_hosts` SSH 客户端在首次连接目标主机时会记录其公钥,并将其保存在 `~/.ssh/known_hosts` 文件中。如果目标主机的公钥未被记录,或记录的公钥发生变化,就会触发该错误。可以手动将目标主机的公钥添加到 Jenkins 用户的 `known_hosts` 文件中: ```bash sudo -u jenkins ssh-keyscan -H 目标IP地址 >> /var/lib/jenkins/.ssh/known_hosts ``` 此命令会将目标主机的公钥添加到 Jenkins 用户的 `known_hosts` 文件中,从而避免 SSH 连接时的公钥验证失败问题[^4]。 #### 2. 确保 Jenkins 用户的 `.ssh` 目录权限正确 Jenkins 用户的 `.ssh` 目录和 `known_hosts` 文件的权限设置必须正确,否则 SSH 客户端可能不会信任已添加的公钥。建议设置如下权限: ```bash chmod 700 /var/lib/jenkins/.ssh chmod 600 /var/lib/jenkins/.ssh/known_hosts ``` 确保 Jenkins 用户的主目录权限也正确: ```bash chmod go-w /var/lib/jenkins ``` 这些权限设置可以防止 SSH 客户端因安全机制而拒绝使用 `known_hosts` 文件中的公钥[^4]。 #### 3. 检查 Jenkins 用户的 Shell 环境 在某些情况下,Jenkins 用户的 Shell 环境可能被错误配置为 `/bin/false` 或 `/sbin/nologin`,导致无法正常执行 SSH 或 SCP 命令。可以通过查看 `/etc/passwd` 文件确认 Jenkins 用户的 Shell 设置: ```bash cat /etc/passwd | grep jenkins ``` 如果发现 Jenkins 用户的 Shell 被设置为 `/bin/false`,需要将其修改为 `/bin/bash`: ```bash sudo usermod -s /bin/bash jenkins ``` 修改后,重新测试 Jenkins 用户是否可以正常执行 `scp` 命令[^3]。 #### 4. 验证 Jenkins 用户的 SSH 密钥配置 确保 Jenkins 用户已经生成 SSH 密钥对,并将公钥添加到目标主机的 `authorized_keys` 文件中: ```bash sudo -u jenkins ssh-keygen -t rsa -b 4096 -C "jenkins@yourdomain.com" sudo -u jenkins ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub jenkins@目标IP地址 ``` 完成上述操作后,可以尝试手动使用 Jenkins 用户执行 `scp` 命令进行测试: ```bash sudo -u jenkins scp -p /path/to/local/file jenkins@目标IP地址:/path/to/remote/directory ``` 如果一切配置正确,`scp` 命令应该可以成功执行,而不再提示 `Host key verification failed` 错误[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值