ssh登录提示RSA Host key认证失败的解决方法
2017-07-11 10:58
851 查看
【问题描述】
今天用ssh命令登录一台此前连接过的服务器,失败,出现下面的错误提示
![](https://img-blog.csdn.net/20170711105929471)
【问题分析】
从提示看,很明显,是RSA key不匹配。
根据提示查看本机/home/user/.ssh/目录下,查看有如下3只文件:
id_rsa
id_rsa.pub
known_hosts
从文件名及查看文件内容可以看出:
1,前两个是用ssh-keygen命令生成的私钥和公钥;
2,known_hosts是ssh访问过的PC的公钥记录,当下次访问相同PC时ssh会核对公钥,如果不同则发出警告,避免受到DNS Hijack攻击;
从我们遇到的错误看,明显是known_hosts出了问题。
【解决方法】
1,删除/home/user/.ssh/目录下的known_hosts文件:
简单粗暴,如果想快速解决这个问题,可以采用
2,修改known_hosts内容:
根据上面截图中的提示
Offending RSA key in /home/user/.ssh/known_hosts:6
意思是,known_hosts文件的第6行发生冲突,因此,有两个方法:
(1)删除此行所记录的公钥:
删除后的效果,其实等同于方法1,删除后再次连接时会记录新的公钥;
(2)将此行所记录的公钥替换为想连接的PC的公钥:
对比了对方PC上的/home/user/.ssh/id_rsa.pub文件,发现和成功连接所生成存放在known_host中的公钥有差异,所以放弃这个方法。
但可以用上述方法(1)中生成的公钥的替换,如果你想来回倒腾下的话,其实结果和方法(1)相同;
其他博客里有介绍修改ssh配置的两种方法,但我尝试下来都失败了,不过,仍然分享在这里,如果有兴趣研究的话,可以研究下失败原因
1,修改/etc/ssh/sshd_config
PermitRootLogin no修改为yes,
PubkeyAuthentication yes修改为no
AuthorizedKeysFile %h .ssh/authorized_keys前面加上#屏蔽掉,
PasswordAuthentication no修改为yes
2,修改/etc/ssh/ssh_config
# StrictHostKeyChecking ask
改成
StrictHostKeyChecking no
【备注信息】
最后,附上ssh连接的认证原理:
公钥:用于加密,存在于服务器
私钥:用于解密,存在于客户机
认证流程:
1,客户端向服务器发出连接请求
2,服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(客户机标志:用户@Host)对应的公钥
3,服务器验证公钥合法,则产生一条随机数(challenge),用公钥加密发送给客户端
4,客户端用私钥解密回传服务器端。
5,随机数一致,认证通过
今天用ssh命令登录一台此前连接过的服务器,失败,出现下面的错误提示
【问题分析】
从提示看,很明显,是RSA key不匹配。
根据提示查看本机/home/user/.ssh/目录下,查看有如下3只文件:
id_rsa
id_rsa.pub
known_hosts
从文件名及查看文件内容可以看出:
1,前两个是用ssh-keygen命令生成的私钥和公钥;
2,known_hosts是ssh访问过的PC的公钥记录,当下次访问相同PC时ssh会核对公钥,如果不同则发出警告,避免受到DNS Hijack攻击;
从我们遇到的错误看,明显是known_hosts出了问题。
【解决方法】
1,删除/home/user/.ssh/目录下的known_hosts文件:
简单粗暴,如果想快速解决这个问题,可以采用
2,修改known_hosts内容:
根据上面截图中的提示
Offending RSA key in /home/user/.ssh/known_hosts:6
意思是,known_hosts文件的第6行发生冲突,因此,有两个方法:
(1)删除此行所记录的公钥:
删除后的效果,其实等同于方法1,删除后再次连接时会记录新的公钥;
(2)将此行所记录的公钥替换为想连接的PC的公钥:
对比了对方PC上的/home/user/.ssh/id_rsa.pub文件,发现和成功连接所生成存放在known_host中的公钥有差异,所以放弃这个方法。
但可以用上述方法(1)中生成的公钥的替换,如果你想来回倒腾下的话,其实结果和方法(1)相同;
其他博客里有介绍修改ssh配置的两种方法,但我尝试下来都失败了,不过,仍然分享在这里,如果有兴趣研究的话,可以研究下失败原因
1,修改/etc/ssh/sshd_config
PermitRootLogin no修改为yes,
PubkeyAuthentication yes修改为no
AuthorizedKeysFile %h .ssh/authorized_keys前面加上#屏蔽掉,
PasswordAuthentication no修改为yes
2,修改/etc/ssh/ssh_config
# StrictHostKeyChecking ask
改成
StrictHostKeyChecking no
【备注信息】
最后,附上ssh连接的认证原理:
公钥:用于加密,存在于服务器
私钥:用于解密,存在于客户机
认证流程:
1,客户端向服务器发出连接请求
2,服务器查看客户端公钥(~/.ssh/authorized_keys)该客户机(客户机标志:用户@Host)对应的公钥
3,服务器验证公钥合法,则产生一条随机数(challenge),用公钥加密发送给客户端
4,客户端用私钥解密回传服务器端。
5,随机数一致,认证通过
相关文章推荐
- SSH 登录失败:Host key verification failed 的解决方法
- ssh远程登录出现:RSA host key for *.*.*.* has changed...的解决办法
- ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决
- Linux——SSH 登录失败:Host key verification failed 的处理方法
- SSH 登录失败:Host key verification failed 的处理方法
- ssh远程登录出现:RSA host key for *.*.*.* has changed的解决办法
- SSH 登录失败:Host key verification failed 的处理方法
- SSH 登录失败:Host key verification failed 的处理方法
- ssh无密码登录设置方法以及出现问题 ECDSA host key 和IP地址对应的key不同的解决
- SSH 登录失败:Host key verification failed 的处理方法
- SSH 登录失败:Host key verification failed 的处理方法
- scp或ssh登录时遇到Host key verification failed问题的解决方法
- scp或ssh登录时遇到Host key verification failed问题的解决方法
- ssh登陆提示"Host key verification failed."的解决方法
- SSH 登录失败:Host key verification failed 的处理方法
- ssh登陆提示"Host key verification failed."的解决方法
- SSH 登录失败:Host key verification failed 的处理方法
- [转载]SSH 登录失败:Host key verification failed 的处理方法
- mysql启动提示mysql.host 不存在,启动失败的解决方法
- ubuntu下配置ssh遇到ssh_host_rsa_key和ssh_host_dsa_key无法加载解决办法