解决REMOTE HOST IDENTIFICATION HAS CHANGED!
场景如下
$ssh -p 2222 root@localhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:uOKypDzp0fdgHbfhzKN9Ci3uiOG54Pmoi4CKOINarfM.
Please contact your system administrator.
Add correct host key in /Users/CHF/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/CHF/.ssh/known_hosts:2
RSA host key for [localhost]:2222 has changed and you have requested strict checking.
Host key verification failed.
这里有一个关键词man-in-the-middle attack
,先来看看wiki的解释:
中间人攻击(英语:Man-in-the-middle attack,缩写:MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。
使用ssh连接一个新host的时候,会有下面的询问:
RSA key fingerprint is SHA256:uOKypDzp0fdgHbfhzKN9Ci3uiOG54Pmoi4CKOINarfM.
Are you sure you want to continue connecting (yes/no)?
输入yes,ssh就会把这个host对应的公钥,保存在~/.ssh/known_hosts
里面。
后面每一次的连接,都会校验host对应的公钥,与~/.ssh/known_hosts
里面的是否匹配,以阻止中间人攻击。
连接越狱设备出现这种问题,是因为我们使用usb连接,host写死为localhost
,不同手机的公钥当然不一样。
解决办法
~/.ssh/known_hosts
中删除localhost
对应的记录
[localhost]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD5UwQeAoQX
解决无法免密登录的问题
使用 -v
打印debug信息
$ssh -v -p 2222 root@localhost
看到如下日志,Offering public key: RSA
服务器没有返回,所以定位为越狱机问题
debug1: Offering public key: RSA SHA256:SUmzZ/w6OjWX1H3i1hqWiXlDgUQjUN7YmomMa7fNquk /Users/CHF/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
查看越狱机日志
/etc/syslog.conf
这个是syslog服务的主要配置文件,根据定义的规则导向日志信息。
$cat /etc/syslog.conf
*.* /var/log/syslog
$cat /var/log/syslog | grep sshd
发现如下日志
sshd[10024]: Authentication refused: bad ownership or modes for directory /private/var/root
google搜索Authentication refused: bad ownership or modes for directory
得知改一下权限就可以解决
chmod 755 /private/var/root
网友评论