Remove key from known_hosts
I built several virtual machines during the last few weeks. The problem is, the .ssh/known_hosts
gives me the Man in the middle warning. This happens because another fingerprint is associated with the virtual machine IP.
In the .ssh/known_hosts
file, however, I don't find the record related to the IP, only two bizarre, key-like strings and "ssh-rsa".
Does anyone have any ideas about how to remove the old key from known_hosts
?
sed -i '6d' ~/.ssh/known_hosts
Will modify the file ~/.ssh/known_hosts:6 , removing the 6th line.
In my opinion, using ssh-keygen -R
is a better solution for an openssh power user, while your regular Linux admin would do better to keep his/her sed skills fresh by using the above method.
The simplest solution is:
rm -f .ssh/known_hosts
ssh will recreate the file again, but you lose key checking for other hosts!
Or, you can use:
ssh-keygen -R "hostname"
Or the ssh "man-in-the-middle" message should indicate which line of the known_hosts file has the offending fingerprint. Edit the file, jump to that line and delete it.
There is an ssh-keygen switch (-R
) for this.
man ssh-keygen
reads:
-R
hostnameRemoves all keys belonging to
hostname
from aknown_hosts
file. This option is useful to delete hashed hosts (see the-H
option above).
You need to run the following command to get rid of this problem. Open the terminal and type the following command:
For all examples below just replace the value after -R
:
ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com