Подтвердить что ты не робот

Не удалось добавить хост в список известных хостов

Mac OSX Lion 10.7.

В попытке обойти странную среду (homebrew не устанавливал wget, и у меня были всевозможные странные блоки и ошибки), я удалил zschrc и homebrew и кучу других вещей, а затем установил оболочку рыбы.

Теперь, когда я пытаюсь нажать/вытащить/из github, я получаю эту ошибку:

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).

Итак, я попытался проверить разрешения моей папки ~./ssh и получил это, что выглядит хорошо для меня:

-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

Все, что в known_hosts является файлом pem, который я использовал для ssh'ing (также с запросом "аутентичность..." ) экземпляру ecac Amazon, хотя я пытался копировать id_rsa и id_rsa.pub там, когда что-то отчаялось.

Любая идея, что происходит? Я хотел бы исправить это, поэтому я не получаю подсказки все много раз, когда я нажимаю/тяну.

EDIT Я успешно выполнил эти инструкции, так что у меня есть свои ключи ssh в Github и они распознаются, так что, когда я запускаю ssh -T git @github.com, я получаю

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

Кажется, что только мой локальный компьютер недоволен моей ситуацией ssh.

4b9b3361

Ответ 1

Должен ли known_hosts быть плоским файлом, а не каталогом?

Если это не проблема, то эта страница в Github может помочь. Попробуйте использовать SSH с флагом -v или -vv, чтобы увидеть подробные сообщения об ошибках. Это может дать вам лучшее представление о том, что не удается.

Ответ 2

В вашем конкретном случае ваша known_hosts - это папка, поэтому вам нужно сначала ее удалить.

Для других людей, которые испытывают подобную проблему, проверьте правильное разрешение на ~/ssh/known_hosts, поскольку оно может принадлежать другому пользователю (например, root). Поэтому вы можете попробовать запустить:

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

чтобы исправить это.

Ответ 3

Для парней на Ubuntu, если вы получите эту ошибку:

Не удалось добавить хост в список известных хостов

Затем просто удалите файл known_hosts и запустите свой ssh. Это приведет к восстановлению файла known_host с соответствующими разрешениями и добавит удаленный хост, который вы пытаетесь передать в этот файл.

Ответ 4

Я думаю, что вопрос OP решается путем удаления ~/.ssh/known_hosts (который был папкой, а не файлом). Но для других, у кого может возникнуть эта проблема, я заметил, что один из моих серверов имел странные разрешения (400):

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

Поэтому я решил это, добавив запись PLUS владельца/пользователя.

chmod u+w ~/.ssh/known_hosts

Таким образом. ~/.ssh/known_hosts должен быть плоским файлом и должен принадлежать вам, и вы должны иметь возможность читать и писать ему.

Вы всегда можете объявить банкротство known_hosts, удалить его и продолжать делать что-то в обычном режиме, а подключение к вещам (git/ssh) приведет к восстановлению новых known_hosts, которые должны работать нормально.

Ответ 5

Итак, идеальные разрешения выглядят так
Для каталога ssh (Вы можете получить это, набрав ls -ld ~/.ssh/)
drwx------ 2 oroborus oroborus 4096 Nov 28 12:05/home/oroborus/.ssh/

d означает каталог, rwx означает, что пользователь oroborus имеет права на чтение и запись. Здесь oroborus - это имя моего компьютера, вы можете найти свой, повторив $ USER. Второй оробор на самом деле группа. Вы можете прочитать больше о том, что означает каждое поле здесь. Это очень важно узнать, потому что, если вы работаете над Ubuntu/OSX или другими дистрибутивами Linux, вы столкнетесь с этим снова.

Теперь, чтобы ваше разрешение выглядело так, вам нужно набрать
sudo chmod 700 ~/.ssh

7 в двоичном коде - 111, что означает чтение 1, запись 1 и выполнение 1, вы можете декодировать 6 с помощью аналогичной логики, означающей только разрешения на чтение и запись.

Вы дали своему пользователю права на чтение, запись и выполнение. Убедитесь, что ваши права доступа к файлам выглядят так.

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

Вы дали здесь разрешение на чтение и запись для всех пользователей. Вы можете увидеть это, набрав ls -l ~/.ssh/

Эта проблема возникает из-за того, что ssh - программа, пытающаяся записать файл с именем known_hosts в своей папке. Во время записи, если он знает, что у него недостаточно прав, он не будет писать в этот файл и, следовательно, потерпит неудачу. Это мое понимание вопроса, более знающие люди могут пролить больше света на это. Надеюсь, поможет

Ответ 6

Эта команда работала для меня,

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

как упоминалось в @kenorb.

Ошибка возникла из-за неработающих разрешений для текущего пользователя.

Ответ 7

Это решение мне нужно.

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

Ответ 8

Это случилось со мной просто из-за нарушенных разрешений. Мой пользователь не читал и не писал доступ к этому файлу. Фиксирование разрешений устраняло проблему

Ответ 9

Я снова сгенерировал ключ "ssh" и добавил в свою учетную запись git. Это сработало для меня.

Вы можете найти следующие команды для генерации "ssh-key":

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

- > Это создает новый ключ ssh, используя предоставленное письмо в качестве метки.

Generating public/private rsa key pair.

- > Когда вам будет предложено "Ввести файл для сохранения ключа", нажмите "Enter". Это принимает местоположение файла по умолчанию.

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

- > В командной строке введите защищенную кодовую фразу. Для получения дополнительной информации см. "Работа с ключевыми фразами ключевого слова SSH"

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

Enter same passphrase again: [Type passphrase again]

- > Создается ваш ключ, чтобы скопировать ключ:

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

Надеюсь, что это сработает!

Ответ 10

Эта команда работала для меня,

sudo chmod +x ~/.ssh/known_hosts 

Ответ 11

для меня, я просто делаю это:

rm -rf ~/.ssh/known_hosts

затем:

Я просто SSH на целевой хост, и все будет в порядке. Это только в том случае, если вы не знаете, какие права и у владельца по умолчанию для файла "known_hosts".

Ответ 12

Проверьте права доступа к файлу, если это хорошо, проверьте родительские каталоги

Я должен был исправить

/home/sravindr/.ssh разрешения, которые помогли мне

Ответ 13

Для всех, кто интересуется, этот работает для меня в Ubuntu:

  1. Перейдите в каталог .ssh.

    $ cd ~/.ssh
    
  2. Удалите файл known_hosts.

    $ rm known_hosts
    
  3. Повторно нажмите ваши изменения Git.