SSH Host verification automatisieren

TheKeeper

Enthusiast
Thread Starter
Mitglied seit
11.09.2009
Beiträge
135
Hallo,
ich bitte mal wieder um Hilfe bei dieser Frage:

Ich schreibe gerade an einem Bash-Script bei dem u.a. auch ein scp losgeschickt wird.
Da aber die Hosts, mit denen sich das Script verbinden wird, nicht unbedingt bekannt sind, muss die Abfrage nach dem Hinzufügen des Host-fingerprints entweder mit yes oder no beantwortet werden.
Aber kann man das irgendwie umgehen, sodass der fingerprint einfach hinzugefügt wird und gut ist? Beim Bashmode wird die Frage leider immer mit "no" beantwortet und schlägt dadurch fehl.

Thanks in advance!

MFG
The Keeper
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
-o STRICTHOSTKEYCHECKING=no
brauchst du hier ;)
Du bekommst dann eine Meldung wie:

Warning: Permanently added 'muh' (RSA) to the list of known hosts.
 
gehts darum zu einer nicht-statischen ip zu verbinden mittels einem dyndns hostname?
wenn du root rechte hast koenntest du ein destination nat per iptables einrichten
z.b. mit:

zuerst ip rausfinden=
$ip=`nslookup derstandard.at | sed -n 's/Address:\ //p' | head -n 1`

irgendeine IP
ip2="10.10.10.10"

danach iptables reinklatschen
iptables -t nat -A OUTPUT -p tcp -d $ip2 --destination-port 22 -j DNAT --to $ip

mit scp auf $ip2 verbinden

am ende vom script
iptables -t nat -D OUTPUT -p tcp -d $ip2 --destination-port 22 -j DNAT --to $ip

verbindet er sich immer zur IP2 und macht einfach ein destination nat auf die aktuelle ip

---------- Post added at 14:42 ---------- Previous post was at 14:42 ----------

-o STRICTHOSTKEYCHECKING=no
brauchst du hier ;)
Du bekommst dann eine Meldung wie:

Warning: Permanently added 'muh' (RSA) to the list of known hosts.

damnit, so gehts natuerlich auch :fresse:
 
@Nascar Danke! Das klingt gut, werde ich am Montag mal probieren.

@ulukay Zwar nicht dass, was ich meinte aber danke. Vielleicht kann ich das doch irgendwann mal gebrauchen ;)

MFG
 
falls du dann auch mit rsync automatisieren willst, musst du dort die optionen für die ssh-verbindung mitgeben:

rsync -avz -rsh='ssh -o STRICTHOSTKEYCHECKING=no' quelle user@host:/ziel

:wink:
 
Soo

also ich kann schonmal sagen, eure Lösung funktioniert wunderbar! :banana:

Jetzt habe ich aber ein kleines verzwicktes Problem, welches zwar schon in vielen Foren gepostet wurde, dessen Lösungen speziell für mein Problem leider unbrauchbar sind.

Mehr zu meinem Script:
Ich möchte, dass es ein Programm an bestimmte Server im Netz schickt (in form einer .tar) dieses dort entpackt und die darin enthaltene install.sh ausführt.

Dieses hab ich auch soweit hinbekommen:
Code:
func_installation() {
echo "Möchten Sie den Namen jedes neuen Clients eingeben? (Manuell, einzeln) y/n (N)"
read choice3
case $choice3 in
	Y|y|j ) choice_name=1;;
	*     ) choice_name=0;;
esac
for wert_ip in "${install_ip[@]}"; do
	echo "Kopieren der Installationsdateien.		|"$wert_ip"|"
	set -e
	scp -o STRICTHOSTKEYCHECKING=no /var/ossec/install/ossec-hids.tar $uname"@"$wert_ip":~/"
	echo "Kopiervorgang erfolgreich. Entpacke Daten.	|"$wert_ip"|"
	
	ssh $uname"@"$wert_ip <<-EOF
		cd ~/
		tar -xf ossec-hids.tar
		cd ./ossec-hids-2.3
		./install.sh
		exit
	EOF
	if [ $choice_name = 1 ]
	then
		echo "Geben Sie den Namen des Clients ein:		|"$wert_ip"|"
		read client_enter_name
		/var/ossec/bin/ossec-batch-manager.pl -a --ip $wert_ip -n $client_enter_name
	else
		/var/ossec/bin/ossec-batch-manager.pl -a --ip $wert_ip -n "Client $wert_ip"
	fi
done
}

Da gibt es nur ein Problem: die install.sh will root-Rechte haben. Nur wie kann ich dieses unter Root, remote ausführen? (Wenn $uname ein normales Administrator-Konto sein soll)

MFG
The Keeper
 
Zuletzt bearbeitet:
mit sudo
brauchst dann halt die entsprechenden berechtigungen dafuer in der jeweiligen /etc/sudoers
 
Okay. Aber gibt es auch eine Möglichkeit das Script auszuführen, ohne bei 200 Servern manuell die /etc/sudoers abzuändern? Vielleicht mit irgendwelchen sudo-Parametern?
 
naja sudo -S liest das root passwort vom stdin ein
allerdings muss sudo generell halt erlaubt sein
mit "su - root" muesstest du das root password manuell eingeben

wenn du also sudo nicht ausfuehren kannst/darfst/es nicht konfiguriert ist und du dich nicht direkt mit root einloggen kannst hastn problem

btw: fuer botnetze nimmt man doch irc bots ;)
 
naja sudo -S liest das root passwort vom stdin ein
allerdings muss sudo generell halt erlaubt sein
mit "su - root" muesstest du das root password manuell eingeben

wenn du also sudo nicht ausfuehren kannst/darfst/es nicht konfiguriert ist und du dich nicht direkt mit root einloggen kannst hastn problem

btw: fuer botnetze nimmt man doch irc bots ;)

Also sudo -S mit Passworteingabe ist möglich und funktioniert:
Code:
sudo -S ./install.sh
$root_passw
exit

Danke!

Ach btw: Durch meine unzureichende Erfahrung mit IRC habe ich deine "Anmerkung" leider nicht ganz verstanden. ^^:rolleyes:
 
Zuletzt bearbeitet:
Hmm es gibt doch noch ein Problem..^^

Das oben genannte Script funktioniert, doch das nächste umso weniger:
Code:
ssh $uname"@"$wert_ip <<-EOF
sudo -S echo "$wert_id $wert_name $wert_ip $wert_key" > /var/ossec/etc/client.keys
$root_passw
sudo -S /etc/init.d/ossec restart
$root_passw
EOF

Es kommt bei der Ausführung nicht mehr zu einer Passwortabfrage sondern sagt gleich: Keine Berechtigung

Hat vielleicht jemand noch eine Idee, was da falsch sein könnte?

---------- Beitrag hinzugefügt um 11:33 ---------- Vorheriger Beitrag war um 08:03 ----------

Okay das Problem hat sich jetzt mehr oder weniger erledigt.
Es diente sowieso einem falschen Ansatz.^^
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh