Ssh: подлинность хоста hostname не может быть установлена

Опции командной строки клиента SSH

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

-p ПОРТ

Устанавливает порт, к которому нужно подключиться на удалённом сервере SSH. Портом по умолчанию является 22. Эту настройку можно установить в конфигурационном файле персонально для каждого хоста.

-E log_file

Добавляет отладочные логи к файлу log_file вместо стандартного вывода ошибок.

-F configfile

Определяет альтернативный файл конфигурации на уровне каждого пользователя. Если в командной строке указан файл конфигурации, системный файл конфигурации (/etc/ssh/ssh_config) будет проигнорирован. По умолчанию для файла конфигурации на уровне пользователя используется ~/.ssh/config.

SSH, SCP Проверка ключа хоста не удалась

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>yle=»margin-bottom:5px;»>Теги:  Host key verification failed  ssh  scp

причины проблемы

Чтобы избежать атак, таких как DNS Hijack, OpenSSH записывает открытый ключ доступного компьютера в ~ / .ssh / known_hosts. В следующий раз, когда вы получите доступ к тому же компьютеру, OpenSSH проверит открытый ключ. Если открытый ключ отличается, OpenSSH выдаст предупреждение, а именно

Host key verification failed.
потеря соединения.

Для этой проблемы есть следующие решения:

1. При выполнении команд ssh и scp добавьте параметр -o StrictHostKeyChecking = no

Во-вторых, очистить содержимое ноу-хау

Интеллектуальная рекомендация

1. Для реальных сигналов (для понимания): A (ω) является соотношением амплитуды выходного сигнала и амплитуды входного сигнала, называемого частотой амплитуды. Φ (ω) — это разница межд…

Один. вести Многие люди задавали некоторые вопросы о создании проекта Flex + LCDS (FDS) в сообщениях и группах. Из-за операции ее трудно четко объяснить, поэтому я написал простой учебник (я обещал эт…

package com.example.phonehttp; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.ScrollView; import android.widget.TextView; public class MainActi…

Он предназначен для реализации подкласса того же родительского класса с родительским классом. Полиморфизм Один и тот же ссылочный тип использует разные экземпляры для выполнения разных операций; Идея …

тема: Объедините два упорядоченных слоя в новый заказанный список и возврат. Новый список состоит из всех узлов двух связанных списков, данных сплавным. Пример: Анализ: два связанных списка состоит в …

Вам также может понравиться

D. Самая ценная строка Пример ввода 2 2 aa aaa 2 b c Образец вывода aaa c На самом деле, будучи задетым этим вопросом, вы должны быть осторожны. После инвертирования строки, если две строки имеют один…

Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surro…

calc () может быть очень незнакомым для всех, и трудно поверить, что calc () является частью CSS. Поскольку он выглядит как функция, почему он появляется в CSS, поскольку это функция? Этот момент такж…

Основываясь на дереве регрессии, сформированном CART, а также на предварительной и последующей обрезке дерева, код выглядит следующим образом:…

Откат Обновление в режиме онлайн с версии Centos (CentOS Linux версии 7.3.1611 (Core) до CentOS Linux версии 7.5.1804 (Core)) # ошибка соединения yum-ssh после обновления yexpected key exchange group …

13 ответов

157

«Ошибка проверки ключа хоста» означает, что клавиша хоста удаленного хоста была изменена.

SSH хранит ключи хоста удаленных хостов в . Вы можете отредактировать этот текстовый файл вручную и удалить старый ключ (вы можете увидеть номер строки в сообщении об ошибке) или использовать

(который я узнал из ответа на
Возможно ли удалить конкретный ключ хоста из файла known_hosts SSH? ).

102

Если вы работаете в определенных ситуациях с удаленным /сценарием, где вам не хватает интерактивного доступа к строке приглашения для добавления-узла, выполните следующие действия:

Предупреждение. Постоянно добавлено «something.example.com, 10.11.12.13» (RSA) в список известных хостов.

10

Также иногда возникает ситуация, когда вы работаете с последовательной консолью, а затем проверка над командой в режиме verbose покажет вам, что не существует, в то время как он делает.

В приведенном выше случае просто удалите и создайте символическую ссылку на .

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

8

В моем случае это было вызвано проблемой udev — не было узла устройства . Решение для меня было просто:

3

Ну, это просто потому, что второй ubuntu требует соединения с помощью ключа, а не пароля.

Я предлагаю вам использовать на вашем компьютере, а затем он должен работать исправно. Он сбросит конфигурацию для openssh и вернется к аутентификации по умолчанию.

Вторая возможность заключается в том, что у вас уже есть ключ для вашего другого ubuntu на вашем ПК, и что он изменился, так что он больше не распознается. В этом случае вам нужно будет отредактировать файл , чтобы удалить проблемную строку, идентифицирующую ваш ubuntu.

3

Это старый поток, и я просто столкнулся с этим ответом, я просто добавлю, что я сделал, чтобы решить эту проблему.

Я просто посмотрел сообщение об ошибке, которое он бросил на меня, и он сказал, чтобы запустить эту команду, чтобы удалить ее из списка хостов. После этого я сделал следующее:

Чем я следил за подсказками оттуда, пока не смог войти в сервер.

3

В терминале:

Появится следующее сообщение или подобное:

Затем подключитесь к EC2 как обычно:

2

Это означает, что ваш ключ удаленного хоста был изменен (может быть изменение пароля хоста),

Ваш терминал предложил выполнить эту команду как пользователь root

Вам нужно удалить это имя хоста из списка хостов на вашем ПК /сервере. Скопируйте эту предложенную команду и выполните ее как пользователь root.

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

1

Вы должны изменить свой ключ таким образом:
Из данной ошибки найдите, какой ключ хоста изменился для
Пример: Нарушение ключа ECDSA в /Users/user-name/.ssh/known_hosts:5
5-я клавиша изменилась, поэтому сделайте следующее:

Обратите внимание: вы должны быть root или иметь привилегию для sudo. 1

1

, вы должны поместить ключ rsa целевого хоста в исходный хост , выполнив его на целевом

и удалите все строки после повторного подключения, и вы получите новый ключ.

Мое решение приходит из этого сообщения в блоге: Не удалось выполнить согласование алгоритма для клиента SSH Secure Shell

Вам необходимо изменить файл следующим образом:

Затем добавьте следующее:

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

Просто отключите строгую проверку ключа хоста в ~ /.ssh /config:

Запустить SSH в фоновом режиме

Существует несколько способов запустить ssh соединение в фоновом режиме — то есть освободим текущий терминал.

-L, screen, tmux, nohup

Мне запустить ssh фоном из скрипта помог nohup, поэтому начнём с него

nohup ssh user@host «cd scripts;python3 my_script.py $ARG1 $ARG2; exit» &

Для чего это было нужно: Python скрипт сначала
открывал одно ssh соединение из
subprocess
там выполнялась команда для запуска

мониторинга потребления памяти

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

Чтобы уйдя из первого подключения не оборвать мониторинг потребления памяти
перед ssh нужно было добавить nohup, а в самом конце поставить &

Ошибка проверки ключа хоста под Mac

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>

Эта проблема возникла после переустановки системы

«Ошибка проверки ключа хоста» означает, что ключ удаленного хоста был изменен. существуют ключи хоста ~ / .ssh / known_hosts. Вы можете отредактировать этот файл, удалить старый ключ хоста или использовать эту команду

The authenticity of host ‘hostname (hostname)’ can’t be established. ECDSA key fingerprint is SHA256:4Tz7f7UkuVF8LaJNRERmAtS0uUNjQj/l1ITvKyxhU7w. Are you sure you want to continue connecting (yes/no)? yes

Интеллектуальная рекомендация

1. Для реальных сигналов (для понимания): A (ω) является соотношением амплитуды выходного сигнала и амплитуды входного сигнала, называемого частотой амплитуды. Φ (ω) — это разница межд…

Один. вести Многие люди задавали некоторые вопросы о создании проекта Flex + LCDS (FDS) в сообщениях и группах. Из-за операции ее трудно четко объяснить, поэтому я написал простой учебник (я обещал эт…

package com.example.phonehttp; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.widget.ScrollView; import android.widget.TextView; public class MainActi…

Он предназначен для реализации подкласса того же родительского класса с родительским классом. Полиморфизм Один и тот же ссылочный тип использует разные экземпляры для выполнения разных операций; Идея …

тема: Объедините два упорядоченных слоя в новый заказанный список и возврат. Новый список состоит из всех узлов двух связанных списков, данных сплавным. Пример: Анализ: два связанных списка состоит в …

Вам также может понравиться

D. Самая ценная строка Пример ввода 2 2 aa aaa 2 b c Образец вывода aaa c На самом деле, будучи задетым этим вопросом, вы должны быть осторожны. После инвертирования строки, если две строки имеют один…

Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother to make the gray scale of each cell becomes the average gray scale (rounding down) of all the 8 surro…

calc () может быть очень незнакомым для всех, и трудно поверить, что calc () является частью CSS. Поскольку он выглядит как функция, почему он появляется в CSS, поскольку это функция? Этот момент такж…

Основываясь на дереве регрессии, сформированном CART, а также на предварительной и последующей обрезке дерева, код выглядит следующим образом:…

Откат Обновление в режиме онлайн с версии Centos (CentOS Linux версии 7.3.1611 (Core) до CentOS Linux версии 7.5.1804 (Core)) # ошибка соединения yum-ssh после обновления yexpected key exchange group …

Как настроить SSH сервер (sshd)

Служба sshd считывает настройки из конфигурационного файла /etc/ssh/sshd_config. Этот файл содержит пары «ключевое слово — аргумент», одна пара на одной строке. Для каждого ключевого слова будет использовано первое полученное значение (исключение составляют несколько директив, которые можно использовать несколько раз, и каждого значение будет учтено, например это Port и ListenAddress).

Опционально аргументы можно заключить в двойные кавычки («), чтобы передать аргументы, содержащие пробелы.

Ключевые слова не чувствительны к регистру, а аргументы чувствительны к регистру.

Многие директивы закомментированы, но они указывают на значение по умолчанию, которое всё равно используется. Если вас устраивает значение по умолчанию, то не нужно ничего менять. Если же вы хотите другое значение, то нужно раскомментировать строку с соответствующей директивой (убрать символ #) и внести изменения.

Дополнительно можно указать опции командной строки — они имеют приоритет над настройками в конфигурационном файле.

Добавление вашего SSH-ключа в ssh-agent

Перед добавлением нового SSH-ключа в ssh-agent для управления вашими ключами, вы должны были проверить существующие SSH-ключи и сгенерировать новый SSH-ключ.

Если у вас установлен GitHub Desktop (для рабочего стола), то вы можете использовать его для клонирования репозиториев и не работать с SSH-ключами.

Убедитесь, что ssh-agent запущен. Или вы можете запустить его вручную:

Добавьте ваш приватный ключ SSH к ssh-agent. Если вы создали ключ с другим именем, или если вы добавляете существующий ключ с другим именем, замените id_rsa в команде на имя файла с вашим приватным ключом.

Далее нужно добавить ключ SSH в свою учетную запись GitHub.

Выполнение команд на удалённом сервере без создания сессии шелла

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

ssh ПОЛЬЗОВАТЕЛЬ@АДРЕСАТ КОМАНДА

Например, для выполнения команды tree на удалённом хосте с IP адресом 192.168.1.36 и отображением результатов на локальной системе, нужно сделать так:

ssh [email protected] tree

Используя эту технику, можно делать интересные вещи, вроде такой, как выполнение команды ls на удалённой системе и перенаправление вывода в файл на локальной системе:

ssh [email protected] 'ls *' > dirlist.txt

Обратите внимание на одиночные кавычки в вышеприведённой команде. Это сделано потому, что мы не хотим, чтобы раскрытие пути было выполнено на локальной машине; поскольку нам нужно это выполнение на удалённой системе

Также если мы хотим стандартный вывод перенаправить в файл на удалённой машине, мы можем поместить оператор редиректа и имя файла внутри одиночных кавычек:

ssh remote-sys 'ls * > dirlist.txt'

Принцип работы ssh_config

Параметры конфигурации SSH соединения можно прописать с помощью трех указанных ниже способов*:

  1. в опциях, задаваемых с помощью командной строки;
  2. в настройках файла конфигурации конкретного пользователя ~/.ssh/ssh_config;
  3. в общесистемном конфигурационном файле (для всех пользователей данного локального компьютера) /etc/ssh/ssh_config;

*Примечание: наибольший приоритет имеет командная строка, затем идет ~/.ssh/ssh_config и в последнюю очередь уже /etc/ssh/ssh_config.

Покажем на простом примере, как создать и отредактировать под Ubuntu ssh config file для конкретного пользователя локальной машины.

Если файл ssh_config не создан, то необходимо его создать с помощью команды:

touch ~/.ssh/config

На следующем этапе нужно отредактировать данный файлв nano ~/.ssh/config таким образом:

Host freehostUA
      HostName 178.20.153.253
     Port 22
    User root

Где: Host — это alias (псевдоним) для нашего SSH-соединения, HostName — IP адрес VPS (или имя хоста, если включен DNS), Port — номер порта, User — имя пользователя.

С помощью несложных настроек мы создали alias для нашего VPS на FREEhost.UA, таким образом, соединиться с нашим удаленным сервером можно будет с помощью простой команды в терминале:

ssh freehostUA

Ниже опишем, что означают параметры, используемые в ssh_config, а также дадим примеры типовых настроек.

Linux подобную ОС Ubuntu можно установить на наш VPS хостинг.

Параметры ssh_config

Все параметры, которые вы сможете использовать в работе с файлом ssh_config можно посмотреть, выполнив команду:

man ssh_config

Для решения типовых задач в работе системного администратора советуем обратить внимание на следующие параметры настроек*:

  • Host — alias (псевдоним), произвольное наименование хоста.
  • HostName — IP адрес удаленного сервера или имя хоста (если настроен DNS).
  • Port — номер порта (если он нестандартный, по умолчанию используется порт 22).
  • User — имя пользователя.
  • IdentityFile — указывается путь к SSH-ключу, который используется для аутентификации при соединении с удаленным сервером (как правило, применяется в том случае, когда ключи не хранятся в директории «по умолчанию»).
  • IdentitiesOnly — сообщает клиенту SSH, какой именно ключ следует использовать для аутентификации на сервере (а не любые ключи, которые находятся в папке для ключей «по умолчанию»). В некоторых случаях может использоваться вместе с параметром IdentityFile, если этот параметр прописан в файле ssh_config, то будут проверены все ключи, даже те, которые пользователь введет в командной строке.
  • ServerAliveInterval и ServerAliveCountMax — ssh-клиент будет запрашивать ответ от удаленного хоста, даже если он не получает никаких данных в указанный интервал времени. Эти параметры помогут предотвратить сбрасывание соединения по причине отсутствия активности.
  • CertificateFile — используется опционально, совместно с параметром IdentityFile для точного указания сертификата, который необходимо предоставить для аутентификации.
  • PreferredAuthentications — параметр, который устанавливает в каком порядке будут использоваться методы аутентификации (по умолчанию: gssapi-with-mic, hostbased аутентификация, аутентификация на базе SSH-ключей, keyboard-interactive и вход по паролю).
  • SetEnv и SendEnv — эти параметры разрешают ssh-клиенту передавать локальные переменные среды на указанный удаленный хост, при этом сервер должен быть настроен для приема этих переменных. Для этого системный администратор должен на удаленном сервере в файле /etc/ssh/sshd_config установить значение Yes для параметра AcceptEnv.
  • HostKeyAlias — клиенту SSH дается указание использовать псевдоним ключа (key alias) из файла ~/.ssh/known_hosts вместо HostName. Данный параметр будет полезен для хостов с динамическими IP-адресами.
  • ProxyJump — с помощью этой опции можно организовать SSH Jump Server (jump host или bastion host), используя флаг –J при написании команды.
  • ForwardAgent и AddKeysToAgent — эта опция служит для организации безопасного проброса ключа (agent forwarding), позволяет осуществить доступ удаленного хоста к локальному SSH-агенту пользователя.

*Примечание: ниже покажем на примерах, как использовать данные опции в файле ssh_config.

Как разрешить или запретить пользователям входить через SSH

Всего имеется 4 директивы, которые разрешают или запрещают пользователям и группам подключаться к SSH. Эти директивы в порядке обработки: DenyUsers, AllowUsers, DenyGroups и наконец AllowGroups.

За ключевым словом AllowUsers может следовать список шаблонов имён пользователей, разделённых пробелами, например:

AllowUsers alice bob

Если директива используется, то вход разрешён только пользователям, имена которых соответствуют шаблонам. Принимаются только имена пользователей, цифровые идентификаторы пользователей не распознаются. По умолчанию вход разрешён для всех пользователей. Если шаблон имеет вид ПОЛЬЗОВАТЕЛЬ@ХОСТ, тогда раздельно проверяются ПОЛЬЗОВАТЕЛЬ и ХОСТ и вход разрешается только определённым пользователям с определённых хостов. В качестве ХОСТа могут быть адреса в формате CIDR, то есть в виде адрес/маска.

Далее о шаблонах, которые могут принимать директивы DenyUsers, AllowUsers, DenyGroups и AllowGroups.

Использование ключа

Ввод пароля для подключения через SSH — раздражающая процедура. У меня почти никогда не получалось ввести его правильно с первого раза. Поэтому я начал искать информацию о том, как подключиться к серверу через SSH без пароля. Простое и безопасное решение — использование ключа. Почему это безопаснее? Потому что пароль можно подобрать. Чтобы исключить такую вероятность, многие пользователи выбирают авторизацию с помощью ключа. 

Суть процедуры в формировании двух ключей: публичного и приватного. Первый копируется на сервер, а второй остается на компьютере пользователя и не передается по сети. В таком случае пароль при подключении не требуется. Когда вы подключаетесь к серверу через SSH, публичный ключ взаимодействует с приватным и открывает доступ к удаленному управлению.

Генерирование ключа и подключение на Windows

Для удобства используем программу PuTTy. Вместе с ней устанавливается утилита PuTTYgen — в ней можно сгенерировать публичный и приватный ключи.

  1. Запустите программу PuTTYgen.
  2. Нажмите на кнопку Gengerate.
  3. Водите курсором мышки по рабочему столу, чтобы сгенерировать случайные значения ключей.
  4. Нажмите на кнопку Save private key, чтобы сохранить на жестком диске приватный ключ. Место хранения может быть любым — его нужно указать в параметрах PuTTY. Сделаем это позже. 
  5. Скопируйте публичный ключ в буфер обмена (Ctrl + C) и закройте генератор ключей.

Теперь нужно перенести публичный ключ на сервер. Запустите программу PuTTY и подключитесь к серверу с помощью пароля. Затем последовательно введите следующие команды:

mkdir ~/.ssh

chmod 0700 ~/.ssh

touch ~/.ssh/authorized_keys

chmod 0644 ~/.ssh/authorized_keys

Эти команды создают на сервере папку и файл для хранения ключей, а также ограничивают к ним доступ — получить его может только владелец.

Следующий шаг — вставка публичного ключа из буфера обмена в файл authorized_keys. Для этого используется команда cat > .ssh/authorized_keys. После ввода команды щелкните по окну терминала правой кнопкой, чтобы вставить скопированный ранее публичный ключ. Для завершения ввода нажмите на сочетание клавиш Ctrl+D.

Вернитесь в настройки PuTTY. Перейдите в раздел Connection — SSH — Auth. Нажмите на кнопку Browse и укажите путь к приватному ключу, который вы ранее сохранили на жестком диске.

Теперь для подключения к серверу через SSH пароль не нужен — достаточно указать логин и IP-адрес сервера.

Генерирование ключа и подключение на Linux и macOS

Теперь посмотрим, как подключиться через SSH ключи на Linux и macOS. 

  1. Запустите терминал на локальном компьютере.
  2. Выполните команду ssh-keygen, чтобы сгенерировать ключи.
  3. Нажмите на Enter, чтобы сохранить ключи.

Генератор предложит также задать кодовую фразу для ключа. Это дополнительная мера безопасности: если кто-то получит доступ к вашей локальной машине, то все равно не сможет подключиться к серверу через SSH. Минус один — вам тоже придется постоянно вводить ключевую фразу. Можно отказаться от этой меры защиты, просто нажав на клавишу Enter. 

На этом процедура создания ключей завершена. Файлы d_rsa (приватный ключ) и id_rsa.pub (публичный ключ) хранятся в папке ~/.ssh/.  Осталось скопировать открытую часть ключа на сервер.

  1. Вернитесь в терминал.
  2. Выполните команду ssh-copy-id [email protected], где root — логин для подключения к серверу по SSH, а 185.104.114.90 — IP-адрес или хост сервера.

После выполнения этой команды публичный ключ будет скопирован на сервер. Теперь вы можете подключаться к удаленной машине с помощью логина и IP-адреса — например, ssh [email protected]. Ключи будут сопоставляться автоматически.

Отключение запроса пароля

Суть приватных ключей в том, что они хранятся на локальных компьютерах. Если вы попытаетесь подключиться к серверу с другой машины, на которой нет ключа, то снова увидите запрос на ввод пароля. Чтобы авторизоваться можно было только по ключу, запретите использование пароля.

  1. Подключитесь к удаленному серверу.
  2. Выполните команду sudo nano /etc/ssh/sshd_config. Файл sshd_config откроется во встроенном текстовом редакторе. 
  3. Найдите строку PasswordAuthentication yes и измените ее на PasswordAuthentication no.
  4. Сохраните изменения и перезапустите службу SSH командой sudo service ssh restart.

Авторизация по паролю отключена. Теперь подключиться к серверу можно только с помощью пары ключей.

Сгенерировать пару ключей

Первый шаг — это генерация пары ключей. Обычно это делается на клиентской машине.
Например, на вашем ноутбуке.

Основная команда ssh-keygen создаст 2048-битную пару RSA ключей. Для
большей надёжности можно добавить флаг -b 4096

Выполните

ssh-keygen -b 4096

Чтобы сгенерировать ключ в /home/$(whoami)/.ssh

или

sudo ssh-keygen -b 4096

Чтобы сгенерировать ключ в /home/root/.ssh

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Нужно придумать имя ключа.

Я назову ключ

andrei-key101

а сохранять буду в текущую директорию.

Enter file in which to save the key (/root/.ssh/id_rsa): andrei-key101
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.

Your identification has been saved in andrei-key101
Your public key has been saved in andrei-key101.pub
The key fingerprint is:
SHA256:abcd/abcdefghijklmnopqrstuvwxyz1234567890ab root@urn-su
The key’s randomart image is:
+——-+
|=o oo++ |
|= oo o. = o |
|+ |
|Oo=o . . |
|B+.o S . |
|+o.o |
|+.0. . |
|o+= . E |
|+=oo. . . |
+———+

Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls

ls

andrei-key101 andrei-key101.pub

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: