Automatisieren Sie das Hinzufügen von Hosts und IP-Adressen zu bekannten Hosts

1076
Andrea Sciamanna

Ich wollte einige Warnungen loswerden, die ich beim Ausführen einer automatisierten Build-Umgebung (genauer gesagt mit Scrutinizer-CI) bekomme.

Beim Graben hier habe ich diese Lösung gefunden, die ich dem Skript hinzufügen kann, das den Container vorbereitet:

ssh-keyscan -H -p 1234 domain.tld >> ~/.ssh/known_hosts

Es scheint, dass dies nicht der beste Weg ist, dies zu tun. Nicht sicher, ob das eine Frage der Sicherheit ist oder was, aber die Warnungen über den Host sind weg.

Das Problem ist, dass ich immer noch eine Warnung für die IP-Adresse bekomme, für die die Domäne aufgelöst wird.

Ich denke, das würde das Problem lösen ssh-keyscan -H -p 1234 123.231.321.213 >> ~/.ssh/known_hosts

Was aber, wenn ich die IP-Adresse nicht kenne oder der Host nicht immer auf dieselbe IP-Adresse auflöst?

Gibt es ein Kommando / Skript, das ich schreiben könnte, um die IP aufzulösen und an das obige Skript zu übergeben?

0

1 Antwort auf die Frage

1
Rich Alloway - RogueWave

Sie können verwenden dig, um die IPs zu erhalten und sie dann an weiterleiten ssh-keyscan.

Beispiel mit xargs:

dig -t a +short www.yahoo.com | grep ^[0-9] | xargs -r -n1 ssh-keyscan -H -p 1234 >> ~/.ssh/known_hosts 

Beispiel mit einer for-Schleife:

for ip in $(dig -t a +short www.yahoo.com | grep ^[0-9]); do ssh-keyscan -H -p 1234 $ip; done >> ~/.ssh/known_hosts 

-Rich Alloway (RogueWave)

Können Sie erklären, warum ich `| verwenden muss? grep ^ [0-9] | xargs -r -n1`? Mit dem einen oder anderen Beispiel bekomme ich ein paar Fehler. Stattdessen verwende ich `ssh-keyscan -H -p 10022 $ (dig -ta + short domain.tld)` Ich bekomme das, was es als legitimes Ergebnis zu betrachten scheint. Tatsächlich gibt "dig -ta + short domain.tld" eine einzige IP-Adresse zurück. Andrea Sciamanna vor 7 Jahren 0
Ich wollte dich erwähnen, aber anscheinend habe ich versagt: das ist ein zweiter Versuch :) @RichAlloway Andrea Sciamanna vor 7 Jahren 0
Kein Problem @AndreaSciamanna! Das `| grep ^ [0-9] `verwendet nur die von dig zurückgegebenen IPs (wenn ein Hostname mit einer Nummer beginnt, muss der grep geändert werden, um die IPs besser zu identifizieren). Beim Testen mit www.yahoo.com erhalte ich zwei IP-Adressen und 'fd-fp3.wg1.b.yahoo.com.', Das ist der CNAME für www.yahoo.com, in der Dig-Ausgabe. ssh-keyscan scheint sich mit der abschließenden Periode zu verhalten, aber ich wollte den CNAME ausschließen. Das `| xargs -r -n1` erstellt eine Ausführung von ssh-keyscan pro Ergebnis, führt ssh-keyscan jedoch nicht aus, wenn keine Ergebnisse vorliegen. Rich Alloway - RogueWave vor 7 Jahren 1