Viele Dienste (wie GitHub) verwenden eine Vielzahl von IP-Adressen und natürlich denselben öffentlichen Schlüssel.
Wie kann ich der Datei known_hosts einen IP-Bereich (vorzugsweise einen einzelnen) hinzufügen?
Für das GitHub-Beispiel werden die folgenden Bereiche verwendet:
- 207.97.227.224/27
- 173.203.140.192/27
- 204.232.175.64/27
- 72.4.117.96/27
- 192.30.252.0/22
Und der Schlüssel ist:
AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / YMF + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==
Antworten:
Wie in anderen Antworten erwähnt, werden IP-Adressbereiche von known_hosts nicht unterstützt. Platzhalter werden jedoch unterstützt. Natürlich sind Wildcards nicht ganz dasselbe. Sie müssen also sehr vorsichtig sein, wie Sie sie in IP-Adressen verwenden, aber im speziellen Fall von Github können Sie dies sicher tun.
Die Situation scheint einfacher geworden zu sein, seitdem die Frage gestellt wurde. Laut der offiziellen Dokumentation von Github wird nur ein IP-Adressbereich verwendet (zumindest was IPv4 betrifft). Dies ist der Bereich 192.30.252.0/22. Das ergibt 1020 mögliche IP-Adressen, die bequemerweise den gesamten möglichen Bereich für das letzte Oktett in nur vier verschiedenen C-Blöcken abdecken.
Ab hier
man 8 sshd
müssen wir in known_hosts mit Folgendem arbeiten:Mit diesen Informationen können wir einen Eintrag mit dem Platzhalter * für das letzte Oktett erstellen, der mit allen möglichen Github-Endpunkten (und NUR diesen Endpunkten) wie folgt übereinstimmt:
Wenn der IP-Bereich, den Sie erstellen mussten, nicht einen vollständigen C-Block und damit alle möglichen Werte für ein Oktett füllen würde, wäre es unmöglich, Platzhalter für eine so genaue Übereinstimmung zu verwenden.
quelle
Ich glaube nicht, dass Sie die Bereiche einfach hinzufügen können, aber ich glaube (kann dies derzeit nicht testen), dass der gleiche Effekt erzielt werden kann, wenn Sie .ssh / ssh_config Folgendes hinzufügen:
Als nächstes würden Sie den Schlüssel zur Datei known_hosts unter dem Namen github-server-pool.github.com hinzufügen.
Annahme: Der Host github-server-pool.github.com existiert nicht oder ist nie über SSH verbunden.
Die Idee dahinter ist, dass ssh den Schlüssel github-server-pool.github.com als Schlüssel verwendet, um den öffentlichen Host-Schlüssel für alle Hosts der Domain github.com zu ermitteln.
quelle
Es gibt keine Unterstützung für IP-Adressensätze in der
known_hosts
Datei. Sie müssen eine Zeile pro Adresse haben.Obwohl der Hostnamen-Teil der Einträge standardmäßig mit einem Hash versehen ist, dient dies nur der Privatsphäre, sodass jemand, der Ihre Daten erfasst,
.known_hosts
nicht ohne Weiteres herausfinden kann, mit welchem Host Sie eine Verbindung hergestellt haben. (Sie können weiterhin Vermutungen überprüfen.) Sie können einen einfachen Hostnamen oder eine IP-Adresse verwenden.Beachten Sie, dass dadurch möglicherweise Duplikate hinzugefügt werden.
quelle
SSH scheint kein Konzept für IP-Bereiche für known_hosts zu haben. Ich gehe davon aus, dass jeder Host aus Sicherheitsgründen einen eindeutigen Schlüssel hat.
Ich habe zwei Möglichkeiten, um Ihre known_hosts vorab zu füllen:
ssh-keyscan
- Schreiben Sie ein kurzes Skript, um alle diese Adressen zu durchlaufen, und geben Sie es entweder inssh-keyscan
eine Dateissh-keyscan
zum Lesen ein.ssh-keyscan
Sie können mehrere Hosts pro Aufruf scannen, indem Sie entweder eine Zeile oder eine Liste der Hosts angeben.Füllen
known_hosts
Sie sich mit einem Skript oder Editor. Das Format ist ziemlich einfach, wenn Sie die nicht gehashte Version verwenden. Es ist:Hostname, IP-Adresse ssh-keytype Schlüssel
hostname
ist der Hostname, den Sie kontaktieren und der für alle GitHub-Adressen gleich ist.IP address
wäre das, was ein Skript durchlaufen würde.key
ist der Schlüssel, den Sie oben angegeben haben.Weder ist elegant, aber ich denke, die SSH-Leute gingen davon aus, dass niemand das tun würde, was GitHub tut.
quelle
Hallo, ich fand das Skript von Gilles ziemlich nützlich, aber nur für Netzwerke zu arbeiten,
0.0.0.0/24
war eine Einschränkung. Ich habe das Skript erweitert, um mit größeren Netzwerken zu arbeiten, bis es0.0.0.0/16
vielleicht für jemand anderen nützlich ist.quelle