Die Antwort von kschurig wird funktionieren, ist aber nicht unbedingt die sicherste. Sie erhalten Bonuspunkte, wenn Sie die Extrameile gehen, damit Sie den Server anhand von mehr als einer URI identifizieren können - dh Hostname und IP-Adresse. Das heißt, Sie können weiterhin gültige URIs dieses Hosts hinzufügen, indem Sie die durch Kommas getrennte Liste erweitern.
Ich suchte jedoch nach einer alltäglichen Möglichkeit, die unbekannte manuelle Host-Interaktion des Klonens eines Git-Repos wie unten gezeigt zu umgehen, und sie sollte helfen, zu erklären, was passiert und wie Sie diesen einen Teil der Skripterstellung für SSH vermeiden können:
brad@computer:~$ git clone [email protected]:viperks/viperks-api.git
Cloning into 'viperks-api'...
The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
Beachten Sie den Fingerabdruck des RSA-Schlüssels ...
Also, das ist eine SSH-Sache, das wird für Git über SSH funktionieren und nur für SSH-bezogene Dinge im Allgemeinen ...
brad@computer:~$ nmap bitbucket.org --script ssh-hostkey
Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-05 10:21 EDT
Nmap scan report for bitbucket.org (104.192.143.3)
Host is up (0.032s latency).
Other addresses for bitbucket.org (not scanned): 104.192.143.2 104.192.143.1 2401:1d80:1010::150
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 1024 35:ee:d7:b8:ef:d7:79:e2:c6:43:9e:ab:40:6f:50:74 (DSA)
|_ 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 (RSA)
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 42.42 seconds
Installieren Sie zunächst nmap auf Ihrem täglichen Treiber. nmap ist sehr hilfreich für bestimmte Dinge, wie das Erkennen offener Ports und das manuelle Überprüfen von SSH-Fingerabdrücken. Aber zurück zu dem, was wir tun.
Gut. Entweder bin ich an den verschiedenen Stellen und Maschinen, an denen ich es überprüft habe, kompromittiert - oder die plausibelere Erklärung dafür, dass alles gut gelaunt ist, ist das, was passiert.
Dieser 'Fingerabdruck' ist nur eine Zeichenfolge, die mit einem Einwegalgorithmus für unsere menschliche Bequemlichkeit verkürzt wurde, wobei das Risiko besteht, dass mehr als eine Zeichenfolge in denselben Fingerabdruck aufgelöst wird. Es kommt vor, sie werden Kollisionen genannt.
Unabhängig davon, zurück zur ursprünglichen Zeichenfolge, die wir im folgenden Kontext sehen können.
brad@computer:~$ ssh-keyscan bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
no hostkey alg
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-129
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-123
no hostkey alg
Wir haben also im Voraus die Möglichkeit, vom ursprünglichen Host eine Form der Identifizierung anzufordern.
Zu diesem Zeitpunkt sind wir manuell genauso anfällig wie automatisch - die Zeichenfolgen stimmen überein, wir haben die Basisdaten, die den Fingerabdruck erstellen, und wir könnten in Zukunft nach diesen Basisdaten fragen (um Kollisionen zu verhindern).
Verwenden Sie diese Zeichenfolge jetzt so, dass Sie nicht nach der Authentizität eines Hosts gefragt werden müssen ...
Die Datei unknown_hosts verwendet in diesem Fall keine Klartexteinträge. Sie werden gehashte Einträge kennen, wenn Sie sie sehen. Sie sehen aus wie Hashes mit zufälligen Zeichen anstelle von xyz.com oder 123.45.67.89.
brad@computer:~$ ssh-keyscan -t rsa -H bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
Die erste Kommentarzeile wird ärgerlich angezeigt - aber Sie können sie mit einer einfachen Weiterleitung über die Konvention ">" oder ">>" entfernen.
Da ich mein Bestes getan habe, um unbefleckte Daten zu erhalten, die zur Identifizierung eines "Hosts" und eines Vertrauens verwendet werden können, füge ich diese Identifikation meiner Datei "unknown_hosts" in meinem Verzeichnis ~ / .ssh hinzu. Da es jetzt als bekannter Gastgeber identifiziert wird, werde ich die oben erwähnte Aufforderung nicht erhalten, als Sie ein Jugendlicher waren.
Danke, dass du bei mir bleibst, los geht's. Ich füge den Bitbucket-RSA-Schlüssel hinzu, damit ich dort im Rahmen eines CI-Workflows auf nicht interaktive Weise mit meinen Git-Repositorys interagieren kann, aber was auch immer Sie tun, was Sie wollen.
#!/bin/bash
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old && echo "|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts
So bleibst du heute Jungfrau. Sie können dasselbe mit Github tun, indem Sie in Ihrer Freizeit ähnlichen Anweisungen folgen.
Ich habe so viele Stapelüberlaufpfosten gesehen, die Ihnen sagten, Sie sollten den Schlüssel programmgesteuert blind hinzufügen, ohne ihn zu überprüfen. Je mehr Sie den Schlüssel von verschiedenen Computern in verschiedenen Netzwerken überprüfen, desto mehr Vertrauen können Sie darauf haben, dass der Host derjenige ist, von dem er sagt, dass er es ist - und das ist das Beste, was Sie von dieser Sicherheitsebene hoffen können.
FALSCH
ssh -oStrictHostKeyChecking = kein Hostname [Befehl]
FALSCH
ssh-keyscan -t rsa -H Hostname >> ~ / .ssh / unknown_hosts
Tun Sie bitte keines der oben genannten Dinge. Sie haben die Möglichkeit, Ihre Chancen zu erhöhen, zu vermeiden, dass jemand Ihre Datenübertragungen über einen Mann im mittleren Angriff belauscht - nutzen Sie diese Gelegenheit. Der Unterschied besteht darin, buchstäblich zu überprüfen, ob der RSA-Schlüssel, den Sie haben, der des echten Servers ist, und jetzt wissen Sie, wie Sie diese Informationen zum Vergleichen erhalten, damit Sie der Verbindung vertrauen können. Denken Sie daran, dass mehr Vergleiche von verschiedenen Computern und Netzwerken normalerweise Ihre Fähigkeit verbessern, der Verbindung zu vertrauen.