kex_exchange_identification: Соединение закрыто удалённым хостом … Как мне решить эту ошибку?

Вопрос или проблема

emil@DESKTOP-1I1B1NM:~$ git clone [email protected]:EmilYoung2004/git_test.git
Клонирование в 'git_test'...
kex_exchange_identification: Соединение закрыто удалённым хостом
fatal: Не удалось прочитать удалённый репозиторий
Пожалуйста, убедитесь, что у вас есть правильные права доступа    
и репозиторий существует.

emil@DESKTOP-1I1B1NM:~$ ssh -T [email protected]
kex_exchange_identification: Соединение закрыто удалённым хостом

Как видите, я пытаюсь подключиться к GitHub из приложения Ubuntu 20.04 из Microsoft Store.
Это действительно раздражает, так как я не могу продолжать свои дела, пока это не будет решено.
Есть ли что-то, что я могу изменить, чтобы предотвратить эту ошибку?

Что-то подсказывает мне, что есть ошибка при подключении к самому GitHub, но я не знаю.

Я учусь, так что не делайте ответы слишком сложными.

Спасибо заранее.

Пожалуйста, убедитесь, что у вас есть правильные права доступа

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

В вашем терминале Ubuntu проверьте, есть ли у вас вообще сгенерированные SSH-ключи с помощью ls -la ~/.ssh. Вы, вероятно, увидите пару файлов с именами id_rsa и id_rsa.pub, если у вас есть ключи. Если нет, это нормально, вы можете сгенерировать их с помощью ssh-keygen и следовать указаниям (принятие значений по умолчанию должно быть допустимо).

Теперь, когда у вас есть ключи, вам нужно будет добавить публичный ключ в ваш аккаунт GitHub. Небольшая заметка: id_rsa – это ваш приватный ключ. Держите его в секрете. Никогда не передавайте его никому, никогда не делитесь им, не публикуйте его в сети и так далее. id_rsa.pub – это ваш публичный ключ. Именно его вы помещаете на другие устройства, с которыми хотите аутентифицироваться, в данном случае на GitHub. Нет проблем делиться публичным ключом с другими людьми/сервисами.

Выведите ваш публичный ключ с помощью cat id_rsa.pub и скопируйте текст, который он выводит. Затем перейдите на GitHub в вашем браузере, убедитесь, что вы вошли в систему, нажмите на иконку пользователя в правом верхнем углу и перейдите в настройки. В левом меню вы увидите SSH и ключи GPG. Нажмите на это (или просто перейдите по https://github.com/settings/keys, если у вас возникли проблемы). Нажмите Новый SSH-ключ, укажите имя, идентифицирующее компьютер, с которого ваш ключ, в поле Заголовка, и вставьте публичный ключ в поле Ключ. Нажмите Добавить SSH-ключ, и все готово.

Теперь у вас должен быть доступ для клонирования через SSH, попробуйте снова выполнить git clone и посмотрите, как это пойдет.


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

В моем случае я пытался ssh на VM с Debian 12. Я прошел через журнал и нашел некоторые журналы, которые, возможно, звучат как атака на мой ssh, поэтому я решил это, обновив openssh-server на VM.

sudo apt-get install openssh-server

и это решило проблему.

Ответ или решение

Ошибка kex_exchange_identification: Connection closed by remote host может возникать по различным причинам при попытке подключения к удаленному серверу через SSH или при выполнении команд Git, таких как git clone. В этом ответе мы подробно рассмотрим возможные причины данной ошибки и методы её устранения.

1. Проверка SSH-ключей

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

  • Проверьте наличие SSH-ключей. Откройте терминал и выполните команду:

    ls -la ~/.ssh

    Если вы видите файлы id_rsa и id_rsa.pub, значит, ключи уже сгенерированы. В противном случае вам необходимо создать новый SSH-ключ.

  • Генерация SSH-ключа. Если ключи отсутствуют, вы можете создать их с помощью команды:

    ssh-keygen

    Следуйте инструкциям на экране и принимайте значения по умолчанию. Это создаст два файла: приватный id_rsa и публичный id_rsa.pub.

2. Добавление ключа на GitHub

После успешного создания ключей вам нужно добавить публичный ключ (файл id_rsa.pub) в свой аккаунт GitHub.

  • Копирование публичного ключа. Используйте команду:

    cat ~/.ssh/id_rsa.pub

    Скопируйте текст, который будет выведён в консоль.

  • Добавление ключа на GitHub. Перейдите на сайт GitHub и выполните следующие действия:

    1. Войдите в свою учетную запись.
    2. Нажмите на свой профиль в правом верхнем углу и выберите "Settings".
    3. В левой части меню выберите "SSH and GPG keys".
    4. Нажмите "New SSH Key", введите имя для ключа (например, название устройства) и вставьте скопированный публичный ключ в поле "Key".
    5. Нажмите "Add SSH Key".

3. Проверка конфигурации SSH

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

  • Проверка файла конфигурации. Откройте файл ~/.ssh/config (если он существует) и убедитесь, что в нём нет неправильных настроек, которые могут блокировать доступ.

4. Обновление OpenSSH

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

sudo apt-get install openssh-server

Это обеспечит наличие последней версии OpenSSH и исправит возможные проблемы, связанные с устареванием программного обеспечения.

5. Проверка состояния сервера

Иногда ошибка может быть связана с проблемами на стороне сервера. Если ошибка возникает постоянно, проверьте:

  • Состояние серверов GitHub. Иногда GitHub сталкивается с временными проблемами. Вы можете проверить состояние их сервисов на сайте GitHub Status.

Заключение

Ошибка kex_exchange_identification: Connection closed by remote host может иметь несколько причин, но большинство из них можно устранить с помощью проверки и настройки SSH-ключей, обновления программного обеспечения и проверки конфигурации. Следуя этим шагам, вы сможете восстановить доступ к репозиториям на GitHub и продолжить свою работу без задержек.

Оцените материал
Добавить комментарий

Капча загружается...