“Проверка ключа хоста перестала работать” даже с удаленным ~/.ssh/known_hosts

Проблема заключается в единственном определении "установленного" слова. Существует несколько способов интерпретировать его.

  • Типичный и самый надлежащий способ "установить" программу состоит в том, чтобы использовать инструмент (инструменты) диспетчера пакетов. Они варьируются от распределения до распределения: на хинду, существует emerge и и набор других полезных программ вокруг перевозки; в находящихся в Debian системах (как Ubuntu), существуют apt-<something> инструменты и так далее. Эти инструменты - то, что необходимо использовать каждый раз, когда возможный - и для установки и для поиска доступного/установленного программного обеспечения - их основное задание в системе состоит в том, чтобы поддержать всю информацию об официальном программном обеспечении.

  • Программное обеспечение, которое не доступно в репозиториях, может также быть установлено его собственными определенными сценариями установки. Такое программное обеспечение не будет автоматически замечено инструментами управления системой - который может вызвать различные проблемы. Для нахождения компонентов таких программ Вас оставляют использовать инструменты как locate, find, which или whereis.

  • Можно также создать программу, поместить ее "вручную" и скорректировать среду (как PATH) так, чтобы это стало применимым. И от пользователя и от точка зрения системы это может очень отличаться, может немного отличаться или не может отличаться вообще по сравнению с предыдущим подходом.

В Вашем случае необходимо различать нахождение двоичного файла и определение, если определенный пакет установлен. Для практической части нахождения двоичного файла можно просто использовать which или whereis. Обратите внимание что PATH переменная окружения может отличаться для корневых и некорневых пользователей. Если Вы хотите определить, установлен ли пакет (использование первой интерпретации того слова), используйте программное обеспечение управления пакетом своего распределения.

3
23.09.2012, 08:26
3 ответа

Хорошо, отвеченный.

Когда я работаю ssh с -v опция, это показало мне фактическую ошибку.

Это было вызвано путем ошибочной установки неправильных прав доступа на /dev/tty, безотносительно то есть, и ssh так или иначе не любил его. sudo chmod 777 /dev/tty казалось, зафиксировал его.

9
27.01.2020, 21:08
  • 1
    Сделайте его 666. Нет никакого смысла дающего разрешение выполнения тому устройству. –  Stéphane Chazelas 23.09.2012, 10:56
  • 2
    OK, если Вы говорите так Право :) –  Karel Bílek 23.09.2012, 15:50
  • 3
    у меня есть подобная проблема (debug1: read_passphrase: can't open /dev/tty: No such device or address) но chmod 666 /dev/tty не помогает. Это работает с моим пользователем, но после того, как я переключился на другого пользователя с su это перестало работать. –  dma_k 28.03.2013, 22:31
  • 4
    @dma_k у меня была эта проблема также. Фиксация должна была работать su с -s /bin/bash –  EM0 24.12.2017, 20:54

Таким образом, проблема плаката была разрешена. Но в случае, если другие приходят к этому вопросу путем поиска, и их признаки не прибывают из той же причины:

Удаление ~/.ssh/known_hosts (или просто незаконная строка в нем), произведет чистку кэшируемого ключа хоста. Однако существует также кэш в масштабе всей системы, который будет сохранен где-нибудь как /etc/ssh/ssh_known_hosts. Ключи хоста не будут кэшироваться там, если это не будут конкретно требовать. Но если Вы имеете проблемы проверки ключа хоста, взглянули в обоих из этих файлов.

4
27.01.2020, 21:08

С этой проблемой также можно столкнуться различными способами, особенно при работе с Windows, к которой может быть подключено несколько реализаций SSH.

Я столкнулся с этим при ssh-подключении к машине с Windows 10, на которой был запущен SSH-сервер под управлением Cygwin. Когда вы запускаете sshиз этого приглашения, он запускает версию ssh для cygwin, которая использует ~/.ssh для хранения файлов ssh ---под cygwin, то есть /home/username.

Однако, если вы запускаете gitиз того же приглашения, а Git был установлен через Windows (, что в моем случае было ), он использует файлы ssh из C :\Users\ имя пользователя.ssh.

Обычно вы запускаете ssh hostnameдля кэширования ключа хоста для git, но в этом случае это не работает, так как существуют разные известные _файлы hosts.

Когда я скопировал ключ из одного известного файла hosts _в другой, команды gitработали нормально.

1
27.01.2020, 21:08

Теги

Похожие вопросы