openssh-server 升级后,无法从known_hosts
文件中删除旧密钥,因为ssh-keygen
出现以下情况:
$ ssh-keygen -R oldserver
/home/grin/.ssh/known_hosts:1: invalid line
/home/grin/.ssh/known_hosts:12: invalid line
/home/grin/.ssh/known_hosts:123: invalid line
Not replacing existing known_hosts file because of errors
我是否必须逐一删除这些行?
如果所有错误都有一个根本原因
一个可能的原因是
known_hosts
包含已过时且现在不受支持的方法的键。就我而言,这是
ssh-dss
从 ssh 中删除的方法,并且ssh-keygen
无法很好地处理它。在这种情况下,可以通过删除所有旧的不受支持的键来解决问题:
使用输出删除非法行
这是无论出于何种原因对非法行进行的通用删除(利用行号位于“:”之间的事实,使用
cut
来获取数字,然后 sed 按相反的数字顺序删除该行,因为每次删除后文件都会变得更短):(我相信还有更好的方法,并且很高兴欢迎 shell [sed/awk] 专家提供更好的方法。)
如果只有几行错误
...然后可以通过文本编辑器简单地删除这些行,跳转到给定的位置。