SSH错误,REMOTE HOST IDENTIFICATION HAS CHANGED!

本文介绍了当遇到SSH登录提示WARNING:REMOTEHOSTIDENTIFICATIONHASCHANGED时的原因及解决方法。通常是因为服务器公钥发生变更,解决方式是通过ssh-keygen命令移除原有公钥记录,确保下次连接使用新的公钥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ssh 登录 错误:"WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"
解决办法:
mv /root/.ssh/known_hosts /tmp 
简单说就是删除known_hosts后重新生成。
产生的原因大概是是IP一样的不同终端出现,所以ssh的认证出现不能区别。

 

ssh会你每个你访问过的计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。所以当服务器公钥改变而我还在用老的公钥时系统就给了你如上的提示。
解决办法:
实用ssh-keygen -R 释放

[hew@localhost ~]$ ssh-keygen -R linuxjia.org
/home/hew/.ssh/known_hosts updated.
Original contents retained as /home/hew/.ssh/known_hosts.old

### 处理 SFTP 远程主机标识已更改解决方案 当遇到 `WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!` 错误时,这通常是因为远程主机的 SSH 密钥已经改变。这种变化可能是由于重新安装操作系统、更换硬件或其他原因引起的[^1]。 #### 方法一:手动编辑 known_hosts 文件 对于 Linux 或 macOS 用户,在本地计算机上的 `.ssh/known_hosts` 文件中存储着之前访问过的每台远程主机的公钥指纹。如果远程主机的身份发生变化,则需要更新这个文件中的记录: 1. 打开终端并输入以下命令来查看当前用户的 home 目录路径: ```bash echo ~ ``` 2. 使用文本编辑器打开该目录下的 .ssh 文件夹内的 known_hosts 文件,并找到对应于目标服务器的那一行。 3. 删除那一行的内容保存文件即可解决问题。 4. 下次尝试连接时会收到确认新密钥的消息,按照提示接受新的密钥即可建立安全连接[^3]。 #### 方法二:自动移除特定条目 也可以利用 ssh-keygen 工具快速清除指定 IP 地址或域名对应的旧有记录而无需手动查找和删除: ```bash ssh-keygen -R "hostname_or_ip" ``` 这里的 `"hostname_or_ip"` 应替换为目标服务器的实际地址。执行上述指令后将会从 known_hosts 中彻底消除与之关联的所有历史数据项[^4]。 #### 方法三:忽略警告继续操作(不推荐) 虽然可以配置客户端忽略此类验证过程从而强制完成传输任务,但这并不被提倡,因为它降低了安全性并且可能使用户暴露于中间人攻击的风险之下。除非是在非常受控环境下工作,并且完全信任网络环境的安全性,否则不应采取这种方式绕过正常的认证机制[^2]。 ```python import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect('hostname', username='user') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值