it-swarm.com.de

Mit XX.XXX.XX.XX kann nicht verhandelt werden: Es wurde kein passender Host-Schlüsseltyp gefunden. Ihr Angebot: ssh-dss

Ich versuche, ein Git-Repository auf meinem Webhost zu erstellen und es auf meinem Computer zu klonen. Folgendes habe ich getan:

  1. Ich habe ein Repository auf dem Remote-Server erstellt.
  2. Ich habe ein Schlüsselpaar generiert: ssh-keygen -t dsa.
  3. Ich habe meinen Schlüssel zu ssh-agent hinzugefügt.
  4. Ich habe den öffentlichen Schlüssel in ~/.ssh Auf den Server kopiert.

Und dann, nach dem Versuch, den Befehl git clone ssh://[email protected]/path-to-repository Auszuführen, erhalte ich eine Fehlermeldung:

Mit XX.XXX.XX.XX kann nicht verhandelt werden: Es wurde kein passender Host-Schlüsseltyp gefunden. Ihr Angebot: ssh-dss
fatal: Konnte nicht aus dem Remote-Repository lesen.
Bitte stellen Sie sicher, dass Sie die richtigen Zugriffsrechte haben und das Repository existiert.

Was bedeutet das?

106
Nikita Gorshkov

In der aktuellen OpenSh-Version sind DSA-Schlüssel standardmäßig veraltet. Sie sollten Ihrem GIT-Anbieter vorschlagen, einen angemessenen Host-Schlüssel hinzuzufügen. Sich nur auf DSA zu verlassen, ist keine gute Idee.

Um dieses Problem zu umgehen, müssen Sie Ihrem ssh -Client mitteilen, dass Sie DSA-Host-Schlüssel akzeptieren möchten, wie in der offiziellen Dokumentation für die Verwendung älterer Versionen beschrieben. Sie haben nur wenige Möglichkeiten, aber ich empfehle, diese Zeilen in Ihr ~/.ssh/config Datei:

Host your-remote-Host
    HostkeyAlgorithms +ssh-dss

Eine andere Möglichkeit ist die Verwendung der Umgebungsvariablen GIT_SSH um diese Optionen anzugeben:

GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone ssh://[email protected]/path-to-repository
167
Jakuje

Sie können auch -oHostKeyAlgorithms=+ssh-dss in Ihrer SSH-Zeile:

ssh -oHostKeyAlgorithms=+ssh-dss [email protected]
73
Guillaume

Für mich hat das funktioniert: (hinzugefügt in .ssh\config)

Host *
HostkeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss
17
user2885534

Wenn Sie wie ich sind und dieses Sicherheitslückensystem nicht oder nicht für alle Benutzer verfügbar machen möchten, können Sie jedem Git-Repo, das dies benötigt, eine Konfigurationsoption hinzufügen, indem Sie diesen Befehl in diesen Repos ausführen. (Hinweis funktioniert nur mit Git-Version> = 2.10, veröffentlicht am 04.09.2016)

git config core.sshCommand 'ssh -oHostKeyAlgorithms=+ssh-dss'

Dies funktioniert jedoch nur, nachdem das Repo eingerichtet wurde. Wenn Sie nicht gerne eine Fernbedienung manuell hinzufügen (und nur klonen möchten), können Sie den Klon folgendermaßen ausführen:

GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss' git clone ssh://[email protected]/path-to-repository

führen Sie dann den ersten Befehl aus, um ihn dauerhaft zu machen.

Wenn Sie nicht die neueste Version haben und trotzdem das Loch so lokal wie möglich halten möchten, empfehle ich Ihnen, es zu platzieren

export GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss'

in einer datei irgendwo sagen git_ssh_allow_dsa_keys.sh und sourceing es bei Bedarf.

8
golvok

Ich möchte ein wenig mit der Lösung für die Serverseite zusammenarbeiten. Der Server sagt also, dass er DSA nicht unterstützt. Dies liegt daran, dass der openssh-Client ihn nicht standardmäßig aktiviert :

OpenSSH 7.0 und höher deaktivieren auf ähnliche Weise den öffentlichen Schlüsselalgorithmus ssh-dss (DSA). Auch es ist schwach und wir empfehlen, es nicht zu verwenden.

Um dies auf der Serverseite zu beheben, sollte ich andere Schlüsselalgorithmen wie RSA oder ECDSA aktivieren. Ich hatte gerade dieses Problem mit einem Server in einem LAN. Ich schlage folgendes vor:

Aktualisiere den openssh:

yum update openssh-server

Führen Sie neue Konfigurationen in sshd_config zusammen, wenn es eine sshd_config.rpmnew gibt.

Stellen Sie sicher, dass Hostschlüssel unter/etc/ssh/vorhanden sind. Wenn Sie keine neuen generieren, lesen Sie 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

Überprüfen Sie in der Datei/etc/ssh/sshd_config die HostKey-Konfiguration. Es sollte die Konfiguration von RSA und ECDSA ermöglichen. (Wenn alle von ihnen standardmäßig kommentiert sind, wird auch die RSA zugelassen, siehe in man sshd_config der Teil von 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

Erstellen Sie auf der Clientseite einen Schlüssel für ssh (nicht wie in der Frage für einen DSA), indem Sie Folgendes ausführen:

ssh-keygen

Danach sollte der Client openssh (> = v7) eine Verbindung mit RSA oder einem besseren Algorithmus herstellen, da es mehr Optionen als ssh-dss (DSA) gibt.

Hier noch ein guter Artikel.

Dies ist meine erste Frage beantwortet, ich begrüße Vorschläge: D.

2
Gus Calca