it-roy-ru.com

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

Mac OSX Lion 10.7.

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

Теперь, когда я пытаюсь нажать/вытащить в/из 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 (также с подсказкой «authenticity ...») для экземпляра Amazon ec2, хотя я попытался скопировать туда 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.

41
Sasha

Разве известные_хосты не должны быть простым файлом, а не каталогом? 

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

16
CXJ

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

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

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

починить это.

94
kenorb

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

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

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

24
Kingz

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

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

Так что я решил это, добавив владелец/пользователь ПЛЮС записи. 

chmod u+w ~/.ssh/known_hosts

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

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

15
Peter Dietz

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

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

как упомянуто @kenorb. 

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

5
Ganesh prasad

Итак, идеальные разрешения выглядят так
Для каталога 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 в своей папке. При записи, если он знает, что у него недостаточно прав, он не будет писать в этот файл и, следовательно, потерпит неудачу. Это мое понимание вопроса, более знающие люди могут пролить больше света на это. Надеюсь, поможет

4
Saras Arya

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

2
Andrea Gherardi

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

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

$ 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

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

1
SH'

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

rm -rf ~/.ssh/known_hosts

затем : 

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

0
Rizvi Faizi

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

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

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

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

0
Yves

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

Sudo chmod +x ~/.ssh/known_hosts 
0
Nishu KC