Ich versuche, ein Git-Repository auf meinem Webhost zu erstellen und es auf meinem Computer zu klonen. Folgendes habe ich getan:
- Ich habe ein Repository auf dem Remote-Server erstellt.
- Ich habe ein Schlüsselpaar generiert :
ssh-keygen -t dsa
. - Ich habe meinen Schlüssel zu ssh-agent hinzugefügt.
- Ich habe den öffentlichen Schlüssel des Servers kopiert
~/.ssh
.
Und dann, nach einem Versuch, den Befehl auszuführen git clone ssh://user@host/path-to-repository
, erhalte ich eine Fehlermeldung:
Mit XX.XXX.XX.XX kann nicht verhandelt werden: Es wurde kein passender Hostschlüsseltyp gefunden. Ihr Angebot: ssh-dss
fatal: Konnte nicht aus dem Remote-Repository lesen.
Stellen Sie sicher, dass Sie über die richtigen Zugriffsrechte verfügen und das Repository vorhanden ist.
Was bedeutet das?
ssh
web-hosting
Nikita Gorshkov
quelle
quelle
Antworten:
In der letzten OpenSH-Version sind DSA-Schlüssel standardmäßig veraltet. Sie sollten Ihrem GIT-Anbieter vorschlagen, einen angemessenen Hostschlü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-Hostschlüssel akzeptieren möchten, wie in der offiziellen Dokumentation für die Legacy-Verwendung beschrieben . Sie haben nur wenige Möglichkeiten, aber ich empfehle, diese Zeilen in Ihre~/.ssh/config
Datei aufzunehmen:Eine andere Möglichkeit besteht darin, Umgebungsvariablen
GIT_SSH
zu verwenden, um diese Optionen anzugeben:quelle
HostkeyAlgorithms +ssh-dss
. Vielen Dank.Sie können auch
-oHostKeyAlgorithms=+ssh-dss
in Ihrer SSH-Zeile hinzufügen :quelle
Bei mir hat das geklappt: (hinzugefügt in
.ssh\config
)quelle
yuor-host
ist der Host,ssh
gegen den Sie laufen . Es ist immer eine schlechte Idee, für alle Hosts einen unsicheren Standard festzulegen.Wenn Sie wie ich sind und dieses Sicherheitslücken-System nicht oder benutzerweit erstellen möchten, können Sie allen Git-Repos, die dies benötigen, 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)
Dies funktioniert jedoch erst, nachdem das Repo eingerichtet wurde. Wenn Sie eine Fernbedienung nicht manuell hinzufügen möchten (und nur klonen möchten), können Sie den Klon folgendermaßen ausführen:
Führen Sie dann den ersten Befehl aus, um ihn dauerhaft zu machen.
Wenn Sie nicht über die neueste Version verfügen und das Loch dennoch so lokal wie möglich halten möchten, empfehle ich das Putten
in einer Datei irgendwo, sagen wir
git_ssh_allow_dsa_keys.sh
, undsource
bei Bedarf.quelle
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 es nicht standardmäßig aktiviert :
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:
Aktualisieren Sie das openssh:
Führen Sie neue Konfigurationen in der Datei sshd_config zusammen, wenn eine neue Datei sshd_config.rpm vorhanden ist.
Stellen Sie sicher, dass sich unter / etc / ssh / Hostschlüssel befinden. Wenn keine neuen generiert werden, siehe
man ssh-keygen
.Ü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 standardmäßig kommentiert sind, wird auch die RSA zugelassen, siehe im
man sshd_config
Teil von HostKey).Erstellen Sie für die Clientseite einen Schlüssel für ssh (kein DSA wie in der Frage), indem Sie einfach Folgendes tun:
Danach sollte sich der Client openssh (> = v7) mit RSA oder einem besseren Algorithmus verbinden, da es mehr Optionen als ssh-dss (DSA) gibt.
Hier noch ein guter Artikel.
Dies ist meine erste beantwortete Frage, ich freue mich über Vorschläge: D.
quelle
Wie würde man mehrere Algorithmen spezifizieren? Ich frage, weil git gerade auf meinem Arbeitslaptop aktualisiert wurde (Windows 10, unter Verwendung des offiziellen Git für Windows-Builds), und ich habe diesen Fehler erhalten, als ich versucht habe, einen Projektzweig auf meine Azure DevOps-Fernbedienung zu übertragen. Ich habe versucht, --set-upstream zu pushen und habe Folgendes erhalten:
Wie würde man also die obigen Vorschläge umsetzen und beide berücksichtigen? (Als schnelle Lösung habe ich die Lösung von @ golvok mit group14 verwendet und es hat funktioniert, aber ich weiß wirklich nicht, ob 1 oder 14 besser ist usw.)
quelle
Sie folgen entweder dem obigen oder diesem Ansatz
Erstellen Sie die Konfigurationsdatei im Verzeichnis .ssh und fügen Sie diese Zeile hinzu.
quelle