Невозможно выполнить переговоры с XX.XXX.XX.XX: не найдено соответствующего типа ключа хоста. Их предложение: ssh-dss
Я пытаюсь создать репозиторий git на моем веб-хосте и клонировать его на своем компьютере. Вот что я сделал:
- Я создал репозиторий на удаленном сервере.
- Я создал пару ключей:
ssh-keygen -t dsa
.
- Я добавил свой ключ в ssh-agent.
- Я скопировал на открытый ключ сервера в
~/.ssh
.
И затем, после попытки выполнить команду git clone ssh://[email protected]/path-to-repository
, я получаю сообщение об ошибке:
Невозможно выполнить переговоры с XX.XXX.XX.XX: не найдено соответствующего типа ключа хоста. Их предложение: ssh-dss
fatal: Не удалось прочитать из удаленного репозитория.
Убедитесь, что у вас есть правильные права доступа и существует репозиторий.
Что это значит?
Ответы
Ответ 1
По умолчанию устаревшие версии DSS-версий версии openssh. Вы должны предложить вашему поставщику GIT добавить разумный ключ хоста. Опираясь только на DSA, это не очень хорошая идея.
В качестве обходного пути вам нужно сообщить своему клиенту ssh
, что вы хотите принять ключи хоста DSA, как описано в официальной документации для использования устаревшей. У вас мало возможностей, но я рекомендую добавить эти строки в ваш файл ~/.ssh/config
:
Host your-remote-host
HostkeyAlgorithms +ssh-dss
Другая возможность - использовать переменную среды GIT_SSH
, чтобы указать следующие параметры:
GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone ssh://[email protected]/path-to-repository
Ответ 2
Вы также можете добавить -oHostKeyAlgorithms=+ssh-dss
в строку ssh:
ssh -oHostKeyAlgorithms=+ssh-dss [email protected]
Ответ 3
Для меня это сработало: (добавлено в .ssh\config
)
Host *
HostkeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss
Ответ 4
Если вы похожи на меня и, скорее всего, не сделаете эту систему дыр в системе безопасности или в рамках всего пользовательского интерфейса, то вы можете добавить опцию конфигурации в любые репозитории git, которые нуждаются в этом, запустив эту команду в этих репозиториях. (примечание работает только с git version >= 2.10, выпущено 2016-09-04)
git config core.sshCommand 'ssh -oHostKeyAlgorithms=+ssh-dss'
Это работает только после настройки репо. Если вам не удобно добавлять удаленный вручную (и просто хотите клонировать), вы можете запустить клон следующим образом:
GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss' git clone ssh://[email protected]/path-to-repository
затем запустите первую команду, чтобы сделать ее постоянной.
Если у вас нет последней версии и по-прежнему хотелось бы, чтобы отверстие было как можно более местным, я рекомендую положить
export GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss'
в файле где-нибудь, скажем git_ssh_allow_dsa_keys.sh
и source
, когда это необходимо.
Ответ 5
Я хочу немного сотрудничать с решением для серверной части. Таким образом, сервер говорит, что он не поддерживает DSA, это потому, что openssh клиент не активирует его по умолчанию:
OpenSSH 7.0 и выше аналогично отключают алгоритм открытого ключа ssh-dss (DSA). Он слишком слаб, и мы рекомендуем его использовать.
Итак, чтобы исправить это на стороне сервера, я должен активировать другие алгоритмы Key, такие как RSA o ECDSA. У меня просто была проблема с сервером в LAN.
Я предлагаю следующее:
Обновить openssh:
yum update openssh-server
Объедините новые конфигурации в sshd_config, если есть sshd_config.rpmnew.
Проверьте, есть ли ключи хоста в /etc/ssh/. Если не создавать новые, см. man ssh-keygen
.
$ ll /etc/ssh/
total 580
-rw-r--r--. 1 root root 553185 Mar 3 2017 moduli
-rw-r--r--. 1 root root 1874 Mar 3 2017 ssh_config
drwxr-xr-x. 2 root root 4096 Apr 17 17:56 ssh_config.d
-rw-------. 1 root root 3887 Mar 3 2017 sshd_config
-rw-r-----. 1 root ssh_keys 227 Aug 30 15:33 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Aug 30 15:33 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys 387 Aug 30 15:33 ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Aug 30 15:33 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 1675 Aug 30 15:33 ssh_host_rsa_key
-rw-r--r--. 1 root root 382 Aug 30 15:33 ssh_host_rsa_key.pub
Проверьте в /etc/ssh/sshd _config конфигурацию HostKey. Он должен обеспечивать конфигурацию RSA и ECDSA. (Если все они прокомментированы по умолчанию, это позволит также RSA, см. В man sshd_config
часть HostKey).
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
Для клиентской стороны создайте ключ для ssh (не DSA, как в вопросе), просто сделав это:
ssh-keygen
После этого, поскольку есть больше опций, чем ssh-dss (DSA), клиент openssh ( >= v7) должен подключаться к RSA или лучшему алгоритму.
Вот еще одна хорошая статья.
Это мой первый вопрос, я приветствую предложения: D.
Ответ 6
Вы либо придерживаетесь подхода, либо этого
Создайте файл конфигурации в каталоге .ssh и добавьте эту строку.
host xxx.xxx
Hostname xxx.xxx
IdentityFile ~/.ssh/id_rsa
User xxx
KexAlgorithms +diffie-hellman-group1-sha1