Ich versuche, git clone
ein Bash-Skript zu durchlaufen, aber das erste Mal, dass ich das Skript und den Server ausführe, ist noch nicht bekannt, dass das Skript fehlschlägt. Ich habe so etwas:
yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
Aber es ignoriert die yes
. Wissen Sie, wie Sie git clone
das Hinzufügen des Schlüssels zu den bekannten Hosts erzwingen können ?
echo yes | git clone [email protected]:repo/repoo.git
?echo yes
ist kein guter Ansatz: Wenn Sie den Befehl zum zweiten Mal ausführen, werden Sie von ssh nicht gefragt, ob Sie fortfahren möchten, da der Serverschlüssel bereits bekannt ist.Antworten:
Fügen Sie Ihrer
~/.ssh/config
Datei Folgendes hinzu :Wenn Sie mit dem open-ssh-Client eine Remote-Shell einrichten (mit dem git-Client), sollten Sie die Schlüsselüberprüfung zu github.com überspringen.
Dies ist eigentlich eine schlechte Idee, da jede Form des Überspringens der Schecks (ob Sie automatisch Ja drücken oder den Scheck zunächst überspringen) Platz für einen Mann mit mittlerer Sicherheitslücke schafft. Besser wäre es, den Fingerabdruck abzurufen und zu validieren und in der
known_hosts
Datei zu speichern, bevor Sie ein Skript ausführen müssen, das automatisch eine Verbindung herstellt.quelle
known_hosts
vorher in der Datei zu speichern .yes
Ausgängey
. RSA-Schlüsselannahmebedürfnisseyes
. Sie könnten versuchen ,yes yes | git clone [email protected]:repo/repoo.git
soyes
gibtyes
statty
.quelle
echo "yes" | ...
nicht. Ich glaube, ichgit
akzeptiere keine Rohrleitungen. Vielleicht nur in einer Version?Das Ausführen
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
vor dem Klonen fügt den Schlüssel hinzu und verhindert, dass die Eingabeaufforderung angezeigt wird.Natürlich ist dieser Ansatz auch für einen MITM-Angriff anfällig.
quelle
Ich bin schon einmal auf dieses Problem gestoßen. Es war zwar auf einem Windows-Computer, aber wir mussten ssh verwenden, um eine Verbindung zu einem Remote-Host herzustellen. Wir hatten das gleiche Problem, dass die erste Verbindung immer fehlgeschlagen ist, weil die Schlüssel nicht erkannt wurden.
Ich habe es gelöst, indem ich manuell eine Verbindung hergestellt und den Registrierungsschlüssel gefunden und zu Beginn des Skripts importiert habe. Unter Linux sollte es die gleiche allgemeine Idee sein: Sie möchten diesen Server zu einer Liste vertrauenswürdiger Hosts hinzufügen, damit ssh Sie nicht jedes Mal fragt, ob Sie ihm vertrauen.
Wenn Sie die Verbindung manuell hergestellt haben, suchen Sie die Schlüsseldatei und fügen Sie sie Ihrer Datei known_hosts hinzu. Auf diese Weise überprüft ssh diese Datei, setzt voraus, dass Sie wissen, was Sie tun, und fährt fort, ohne Sie nach dem Fingerabdruck zu fragen.
quelle