I am supposed to put up a file on a server from my own computer with ssh as a school assignment.

It has been a slow process but now I'm stuck. I have googled but not found anything that has helped. As I am a total beginner at this it is probably some stupid fault of mine, so please help me out (easy instructions, expect me to do it wrong ;) ) . Below is the terminal text from where I am stuck, I have tried both logged in on my computer and logged in on the server.

logged in on the server:

teddy@rymd-srv:~$ ssh-keygen -R teddy@elev.rymdgymnasiet.com
/home/teddy/.ssh/known_hosts updated.
Original contents retained as /home/teddy/.ssh/known_hosts.old
teddy@rymd-srv:~$ scp -r teddy@ 
teddy@'s password:
Host key verification failed.
lost connection

logged in on my own computer:

teddy@TeddysDator:~$ ssh-keygen -R teddy@elev.rymdgymnasiet.com 
/home/teddy/.ssh/known_hosts updated.
Original contents retained as /home/teddy/.ssh/known_hosts.old
teddy@TeddysDator:~$ scp -r teddy@ 
The authenticity of host ' (' can't be established.
ECDSA key fingerprint is ef:9c:4c:41:3c:9d:b1:40:05:67:30:34:e8:d3:ab:c6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '' (ECDSA) to the list of known hosts.
teddy@'s password:
Host key verification failed.
lost connection
  • why did you use ssh-keygen -R instead of doing a regular ssh? I don't understand that. Do ssh -v teddy@elev.rymdgymnasiet.com and add it in your question – maniat1k Feb 27 '12 at 15:40

This is likely a problem with how older versions of SSH handle host verification when ECDSA is used by default.

If you trust that the server and network have not been compromised, just add the host's RSA key to your known_hosts file:

ssh-keyscan ssh-server.example.com | tee -a ~/.ssh/known_hosts
| improve this answer | |
  • 1
    Epic! This worked! – Dyin Apr 22 '14 at 12:18
  • Do I have to add this on server or on development machine? – mladj0ni Mar 30 '16 at 13:58
  • @mladj0ni it's on dev machine. – holms Feb 24 '18 at 23:04

This usually indicates that the host's key in your known_hosts file and that handed to you by the server don't match.

This can mean two things: that the server's key did indeed change (if they reinstalled it, for instance), or that there is indeed a "man in the middle" attack going on.

The best way to make sure is to contact the server's administrator and tell him about the error message, asking him if he knows about this change of key. If he knows nothing, you may want to be cautious about connecting to the server.

Usually what you do here is:

ssh-keygen -R server.name

to remove the old entry. I notice you're already doing this, so I'm not too sure what's happening here. However the fact that you're doing this suggests that you've been told to do it, which may also indicate that the server's key does indeed change on a periodic basis.

One thing to try is disable host key checking altogether (not recommended, but if you're doing the connection from the server to itself I guess it should be relatively safe):

ssh -o 'StrictHostKeyChecking=no' ssh-server.example.com

Note, if this works, please DON'T make this the default, as it is quite unsafe; instead, let the server's administrator know about this, because this could be a problem with the server and its key information.

Read here for some good information on ssh host key checking:


| improve this answer | |

You can also try to select another host key algorithm:

ssh -o HostKeyAlgorithms=ssh-dss -l teddy

If you want to make this per-host permanent, you could add a statement to your ~/.ssh/config:

    HostKeyAlgorithms ssh-dss

This above example is for DSA host keys, use ssh-rsa to select RSA host keys.

| improve this answer | |
  • Excellent, that did the trick for me, using ssh-rsa. – lxg Sep 2 '15 at 8:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.