Após a atualização do openssh-server é impossível remover chaves antigas do known_hosts
arquivo porque 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
Preciso remover essas linhas individualmente?
Se todos os erros têm uma razão raiz
Um possível motivo é que
known_hosts
contém chaves com métodos obsoletos e agora sem suporte.No meu caso, o
ssh-dss
método foi removido do ssh essh-keygen
não conseguiu lidar com isso corretamente.Neste caso, o problema pode ser resolvido removendo todas as chaves antigas não suportadas:
Removendo linhas ilegais usando a saída
Aqui está uma remoção genérica de linhas ilegais, independentemente do motivo (usa o fato de que os números das linhas estão entre ":", usando
cut
para obter o número, então sed para remover essa linha em ordem numérica reversa, já que o arquivo fica menor a cada remoção):(Tenho certeza de que existem maneiras melhores e recebo com prazer os gurus do shell [sed/awk] que oferecem seus melhores métodos.)
Se houver apenas algumas linhas de erro
…então as linhas podem ser simplesmente removidas por um editor de texto, saltando para a posição fornecida.