Вопрос или проблема
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 и выполните следующие действия:
- Войдите в свою учетную запись.
- Нажмите на свой профиль в правом верхнем углу и выберите "Settings".
- В левой части меню выберите "SSH and GPG keys".
- Нажмите "New SSH Key", введите имя для ключа (например, название устройства) и вставьте скопированный публичный ключ в поле "Key".
- Нажмите "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 и продолжить свою работу без задержек.