Portál AbcLinuxu, 11. května 2025 10:14
for server in `cat server_names` do echo $server ssh $server grep "\[UU\]" /proc/mdstat done
for ip in $list; do ssh user@$ip $2; done
Kedze mam vela serverov, potrebujem to dat do cyklu.
To není pravda. Přesně k tomu je určené pssh
, aby člověk nemusel dělat ručně nějaký cyklus. Vytvoří se soubor s názvy serverů (a uživatelskými jmény, případně porty) s řádky ve formátu user@host:port
a pssh
pak jednoduše spustí příkaz přes SSH paralelně na všech serverech najednou. Samozřejmě je potřeba používat SSH klíče, protože hesla v souborech jsou nebezpečný nesmysl. Díky pssh
se všechno zařídí automaticky — od spuštění příkazu na daných serverech až po zpracování výstupu příkazů, což může být buď výpis na terminál nebo přidání do souborů pro každý server.
Kdybys chtěl za každou cenu znova vynalézat kolo, ovšem bez paralelismu, můžeš to zařídit zhruba takto:
while read UZIVATEL SERVER RSAFILE discard; do PRIKAZ1="ssh -i $RSAFILE -p 22" PRIKAZ2='cat /proc/mdstat | grep '\''\[UU\]'\' TEST="$PRIKAZ1 ${UZIVATEL}@${SERVER} $PRIKAZ2" if $TEST; then echo "Disky OK"; else echo "Zly disk"; fi done < seznam_serverů # <<< Tohle je klíčové!Soubor
seznam_serverů
by pak mohl vypadat například takto:
lojza 2a01:abcd:ef01:2345:: ~/.ssh/id_rsa.0 franta 2a01:abcd:ef01:2345::1 ~/.ssh/id_rsa.1 hubert 2a01:abcd:ef01:2345::1 ~/.ssh/id_rsa.2
Ale jak už jsem psal — nesrovnatelně lepší je použít pssh
. Spouští SSH paralelně, má hezčí výstup a člověk si nemusí nic hackovat manuálně.
hesla v souborech jsou nebezpečný nesmyslJak se to liší s bezpečností od klíčů v souborech?
Soubor seznam_serverů by pak mohl vypadat například takto:Využil bych výhod kryptografie s veřejným klíčem a měl jenom jeden soukromý, jehož veřejná část by byla rozkopírovaná na všech serverech.
Jak se to liší s bezpečností od klíčů v souborech?
Například tím, že heslo na příkazové řádce se vždycky na chvíli objeví ve výstupu z ps
, jakkoliv se příslušný program snaží ho rychle skrýt. (Jasně, každý systém má na tohle nějaký drobný tweak, ale obecně je psaní hesel do příkazové řádky hodně špatný nápad.) Další zjevný rozdíl je, že klíč v souboru může být (a měl by být) zašifrovaný, tj. parametr -i
má především říct SSH, na co se má zeptat ssh-agent
a, nikoliv co má jen tak samo otvírat (i když nešifrované klíče přímo otvírat umí).
Zpravidla tohle řeším tak, že mám někde spuštěný screen se ssh-agentem a v ssh-agentovi načtené klíče. To sice není ideální řešení (například rootkitu opravdu neodolá, narozdíl od samotných zašifrovaných klíčů), ale pořád je to asi tak o řád lepší než heslo v textovém souboru. Navíc je to velmi pohodlné, protože hesla od klíčů nemusím zadávat častěji než jednou za uptime daného stroje.
Využil bych výhod kryptografie s veřejným klíčem a měl jenom jeden soukromý, jehož veřejná část by byla rozkopírovaná na všech serverech.
Nic proti tomu. Pravda je, že klíče uložené pohromadě na jednom systému nejsou o nic bezpečnější než jeden klíč ... většinou ... podle toho, kolik jich člověk zároveň používá == má dešifrovaných v RAM.
To ale pssh
nenahradí. Ale může to posloužit jako doplněk k pssh, třeba když člověk potřebuje nastavit ještě jiné optiony než jenom login a port. (A že jich je...)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.