Я пытаюсь создать репозиторий git на своем веб-хосте и клонировать его на своем компьютере. Вот что я сделал:
- Я создал репозиторий на удаленном сервере.
- Я создал пару ключей:
ssh-keygen -t dsa
. - Я добавил свой ключ в ssh-agent.
- Я скопировал на сервер публичный ключ в
~/.ssh
.
А потом после попытки запустить команду git clone ssh://user@host/path-to-repository
выдает ошибку:
Невозможно согласовать с XX.XXX.XX.XX: соответствующий тип ключа хоста не найден. Их предложение: ssh-dss
fatal: не удалось прочитать из удаленного репозитория.
Убедитесь, что у вас есть правильные права доступа и репозиторий существует.
Что это значит?
ssh
web-hosting
Никита Горшков
источник
источник
Ответы:
В последней версии openssh по умолчанию не рекомендуется использовать ключи DSA. Вы должны предложить своему провайдеру GIT добавить какой-нибудь разумный ключ хоста. Полагаться только на DSA - не лучшая идея.
В качестве обходного пути вам необходимо сообщить своему
ssh
клиенту, что вы хотите принять ключи хоста DSA, как описано в официальной документации для устаревшего использования . У вас есть несколько возможностей, но я рекомендую добавить эти строки в ваш~/.ssh/config
файл:Другая возможность - использовать переменную среды
GIT_SSH
для указания этих параметров:источник
HostkeyAlgorithms +ssh-dss
. Спасибо.Вы также можете добавить
-oHostKeyAlgorithms=+ssh-dss
в свою строку ssh:источник
Для меня это сработало: (добавлено в
.ssh\config
)источник
yuor-host
это хост,ssh
против которого вы работаете . Установка небезопасного по умолчанию для всех хостов - всегда плохая идея.Если вы похожи на меня и предпочли бы не делать эту дыру в безопасности системной или общедоступной, то вы можете добавить параметр конфигурации в любые репозитории git, которые в этом нуждаются, запустив эту команду в этих репозиториях. (примечание работает только с версией git> = 2.10, выпущенной 04.09.2016)
Однако это работает только после настройки репо. Если вам неудобно добавлять пульт вручную (и вы просто хотите клонировать), вы можете запустить клон следующим образом:
затем запустите первую команду, чтобы сделать ее постоянной.
Если у вас нет последней версии, но вы все же хотите, чтобы отверстие было как можно более локальным, я рекомендую поставить
в файле где-нибудь, скажем
git_ssh_allow_dsa_keys.sh
, иsource
при необходимости.источник
Хочу немного поработать с решением для серверной части. Итак, сервер сообщает, что не поддерживает DSA, потому что клиент openssh не активирует его по умолчанию :
Итак, чтобы исправить это на стороне сервера, я должен активировать другие ключевые алгоритмы, такие как RSA или ECDSA. У меня просто была такая проблема с сервером в локальной сети. Предлагаю следующее:
Обновите openssh:
Объедините новые конфигурации в sshd_config, если есть sshd_config.rpmnew.
Убедитесь, что в / etc / ssh / есть ключи хостов. Если не генерировать новые, см
man ssh-keygen
.Проверьте в / etc / ssh / sshd_config конфигурацию HostKey. Это должно позволить настройку RSA и ECDSA. (Если все они закомментированы по умолчанию, это также разрешит RSA, см. В
man sshd_config
части HostKey).Для клиентской стороны создайте ключ для ssh (не DSA, как в вопросе), просто выполнив следующие действия:
После этого, поскольку существует больше вариантов, чем ssh-dss (DSA), клиент openssh (> = v7) должен подключаться с помощью RSA или лучшего алгоритма.
Вот еще одна хорошая статья.
Это мой первый ответ на вопрос, я приветствую предложения: D.
источник
Как указать несколько алгоритмов? Я спрашиваю, потому что git только что обновился на моем рабочем ноутбуке (Windows 10, с использованием официальной сборки Git для Windows), и я получил эту ошибку, когда попытался отправить ветку проекта на свой пульт Azure DevOps. Я попытался нажать --set-upstream и получил следующее:
Итак, как бы реализовать приведенные выше предложения с учетом обоих? (В качестве быстрого решения я использовал решение @golvok с group14, и оно сработало, но я действительно не знаю, лучше ли 1 или 14 и т. Д.)
источник
Вы либо следуете вышеуказанному подходу, либо этому
Создайте файл конфигурации в каталоге .ssh и добавьте эти строки.
источник