Failed to add the host to the list of know hosts

GithubSshPermissionsTerminalSsh Keys

Github Problem Overview


Mac OSX Lion 10.7.

In an effort to get around weird environment stuff (homebrew wasn't installing wget, and I had all sorts of weird blocks and errors), I uninstalled zschrc and homebrew and a bunch of other stuff, then installed fish shell.

Now, whenever I try to push/pull to/from github, I get this error:

The authenticity of host 'github.com (204.232.175.90)' can't be established.
RSA key fingerprint is <string of colon-separated chars that I should probs keep private>.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/Users/sasha/.ssh/known_hosts).

So I tried to check the permissions of my ~./ssh folder, and got this, which looks fine to me:

-rw-r--r--  1 sasha  staff    97B Jul  9 22:56 config
-rw-------  1 sasha  staff   1.7K May 16  2012 id_rsa
-rw-r--r--  1 sasha  staff   403B May 16  2012 id_rsa.pub
drwx------  5 sasha  staff   170B Jul 15 09:56 known_hosts

All that's in known_hosts is a pem file I used for ssh'ing (also with the "authenticity..." prompt) to an Amazon ec2 instance, though I tried copying id_rsa and id_rsa.pub there when things got desperate.

Any idea what's going on? I'd love to fix this so I don't get prompted all the many times I push/pull.

EDIT I followed these instructions successfully a while ago, so I do have my ssh keys on Github, and they're recognized, so that when I run ssh -T [email protected], I get

Hi sashafklein! You've successfully authenticated, but GitHub does not provide shell access.

It seems to be exclusively my local computer that's unhappy with my ssh situation.

Github Solutions


Solution 1 - Github

In your specific case, your known_hosts is a folder, so you need to remove it first.

For other people which experiencing similar issue, please check the right permission to your ~/ssh/known_hosts as it may be owned by different user (e.g. root). So you may try to run:

sudo chown -v $USER ~/.ssh/known_hosts

to fix it.

Solution 2 - Github

This is the solution i needed.

sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/*
sudo chown -R ${USER} ~/.ssh/
sudo chgrp -R ${USER} ~/.ssh/

Solution 3 - Github

For guys on Ubuntu, if you get this error:

> Failed to add the host to the list of known hosts

Then simply delete the known_hosts file, and re-run your ssh. This will regenerate the known_host file with appropriate permissions, and add the remote host you are trying to ssh into to this file.

Solution 4 - Github

I think the OP's question is solved by deleting the ~/.ssh/known_hosts (which was a folder, not a file). But for other's who might be having this issue, I noticed that one of my servers had weird permissions (400):

-r--------. 1 user user 396 Jan 7 11:12 /home/user/.ssh/known_hosts

So I solved this by adding owner/user PLUS write.

chmod u+w ~/.ssh/known_hosts

Thus. ~/.ssh/known_hosts needs to be a flat file, and must be owned by you, and you need to be able to read and write to it.

You could always declare known_hosts bankruptcy, delete it, and continue doing things as normal, and connecting to things (git / ssh) will regenerate a new known_hosts that should work just fine.

Solution 5 - Github

Shouldn't known_hosts be a flat file, not a directory?

If that's not the problem, then this page on Github might be of some help. Try using SSH with the -v or -vv flag to see verbose error messages. It might give you a better idea of what's failing.

Solution 6 - Github

This command worked for me,

sudo chown -v $USER ~/.ssh/known_hosts

as mentioned by @kenorb.

The error was coming due to broken permissions, for the current user.

Solution 7 - Github

Okay so ideal permissions look like this
For ssh directory (You can get this by typing ls -ld ~/.ssh/)
drwx------ 2 oroborus oroborus 4096 Nov 28 12:05 /home/oroborus/.ssh/

d means directory, rwx means the user oroborus has read write and execute permission. Here oroborus is my computer name, you can find yours by echoing $USER. The second oroborus is actually the group. You can read more about what does each field mean here. It is very important to learn this because if you are working on ubuntu/osx or any Linux distro chances are you will encounter it again.

Now to make your permission look like this, you need to type
sudo chmod 700 ~/.ssh

7 in binary is 111 which means read 1 write 1 and execute 1, you can decode 6 by similar logic means only read-write permissions

You have given your user read write and execute permissions. Make sure your file permissions look like this.

total 20
-rw------- 1 oroborus oroborus  418 Nov  8  2014 authorized_keys
-rw------- 1 oroborus oroborus   34 Oct 19 14:25 config
-rw------- 1 oroborus oroborus 1679 Nov 15  2015 id_rsa
-rw------- 1 oroborus oroborus  418 Nov 15  2015 id_rsa.pub
-rw-r--r-- 1 oroborus root      222 Nov 28 12:12 known_hosts

You have given here read-write permission to your user here for all files. You can see this by typing ls -l ~/.ssh/

This issue occurs because ssh is a program is trying to write to a file called known_hosts in its folder. While writing if it knows that it doesn't have sufficient permissions it will not write in that file and hence fail. This is my understanding of the issue, more knowledgeable people can throw more light in this. Hope it helps

Solution 8 - Github

It happened to me simply because of broken permissions. My user did not have read nor write access to that file. Fixing permissions fixed the problem

Solution 9 - Github

I generated the "ssh" key again and added to my git account. This worked for me.

Please find following commands to generate the "ssh-key":

$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

-> This creates a new ssh key, using the provided email as a label.

Generating public/private rsa key pair.

-> When you're prompted to "Enter a file in which to save the key," press Enter. This accepts the default file location.

Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]

-> At the prompt, type a secure passphrase. For more information, see "Working with SSH key passphrases"

Enter passphrase (empty for no passphrase): [Type a passphrase]

Enter same passphrase again: [Type passphrase again]

-> Your key is generated, to copy the key:

$ sudo cat /root/.ssh/id_rsa-pub

Hope this works!

Solution 10 - Github

to me, i just do this :

rm -rf ~/.ssh/known_hosts

then :

i just ssh to the target host and all will be okay. This only if you dont know, what permission and the default owner of "known_hosts" file.

Solution 11 - Github

I was having this issue and found that within ~/.ssh/config I had a line that read:

UserKnownHostsFile=/home/.ssh-agent/known_hosts

I just modified this line to read:

UserKnownHostsFile=~/.ssh/known_hosts

That fixed the problem for me.

Solution 12 - Github

It may be due to the fact that the known_hosts file is owned by another user i.e root in most cases. You can visit the path directory given (/home/taimoor/.ssh/known_hosts in my case) and check if the root is the owner and change it to the default owner.

Example:

Error Description - Error Description

Before changing the owner - Before changing the owner

After changing the owner - enter image description here

Solution 13 - Github

"Failed to add the host to the list of know hosts"

Was also my error. I tried chancing owner and rights.

And then i did see that it tried to write to "~/.ssh/known_hosts.d/"

Failed to add the host to the list of known hosts (~/.ssh/known_hosts.d/<hostname>).

if this also happens to you, just create the folder:

mkdir ~/.ssh/known_hosts.d
chmod 700 ~/.ssh/known_hosts.d

While this wouldn't have Solved the Problem of the Original Poster, (since his system tryed to write to the "/.ssh/known_hosts" file and not to an systemd directory like "/.ssh/known_hosts.d/") i thought it would help others who searched for the same error message.

The difference is that when an system tries to write to an known_hosts file all host data will be contained there. While in the directory it will create an file for each host in that directory.

For more info on such directories -> https://askubuntu.com/questions/7648/many-directories-have-a-d-suffix-extension-what-does-it-mean

Solution 14 - Github

This command worked for me,

sudo chmod +x ~/.ssh/known_hosts 

Solution 15 - Github

Check permissions of the file, if it is good check parent directories

I had to correct

/home/sravindr/.ssh permissions which worked for me

Solution 16 - Github

it works with me when I tried the following commands

sudo chown $my_user .ssh/id_rsa
sudo chown $my_user .ssh/id_rsa.pub
sudo chown $my_user .ssh/known_hosts

Solution 17 - Github

just in case anyone else encounters this error message and the permissions on .ssh and .ssh/known_hosts look good.

My problem was that I had installed gh from snap and snap apps have limited access to the file system and apparently could not access .ssh. The solution is to remove the snap installation and install from apt.

Solution 18 - Github

> For anyone interested, this one worked for me in Ubuntu:

  1. Go to .ssh directory.

    $ cd ~/.ssh
    
  2. Remove the known_hosts file.

    $ rm known_hosts
    
  3. Re-push your Git changes.

Solution 19 - Github

I couldn't solve this despite all the above answers.

My solution was to move from ssh to https.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSashaView Question on Stackoverflow
Solution 1 - GithubkenorbView Answer on Stackoverflow
Solution 2 - GithubStoney EagleView Answer on Stackoverflow
Solution 3 - GithubKingzView Answer on Stackoverflow
Solution 4 - GithubPeter DietzView Answer on Stackoverflow
Solution 5 - GithubCXJView Answer on Stackoverflow
Solution 6 - GithubGanesh prasadView Answer on Stackoverflow
Solution 7 - GithubSaras AryaView Answer on Stackoverflow
Solution 8 - GithubAndrea GherardiView Answer on Stackoverflow
Solution 9 - GithubSH'View Answer on Stackoverflow
Solution 10 - GithubRaigorView Answer on Stackoverflow
Solution 11 - GithubEclipseGcView Answer on Stackoverflow
Solution 12 - GithubTaimoor NadeemView Answer on Stackoverflow
Solution 13 - GithubSilver SkyView Answer on Stackoverflow
Solution 14 - GithubNisu KhadkaView Answer on Stackoverflow
Solution 15 - GithubSabarishView Answer on Stackoverflow
Solution 16 - GithubAhmad Al-KurdiView Answer on Stackoverflow
Solution 17 - GithubRussellView Answer on Stackoverflow
Solution 18 - GithubYvesView Answer on Stackoverflow
Solution 19 - GithubBrett SuttonView Answer on Stackoverflow