SSH – přidání pub klíčů scriptem
Dostal jsem se do situace, kdy je třeba přidat ssh klíč nového serverů na pobočkových 350 serverů. Situace je jednoduchá díky tomu, že hlavní server na pobočky již přístup má, takže stačí zeditovat všechny pobočky a přidat klíč nový.
Zadání:
– uživatel root na novém serveru musí mít přístup bez hesla na všechny pobočky (ssh, scp), ale pobočky na něj zpět přístup nemají
– uživatel agent na novém serveru musí mít též všude přístup, uživatel agent z pobočky musí mít povolen přístup na nový server
Manuálně to opravdu dělat nebudu :D takže jako vždy – scriptem. Asi bude nejjednodušší script ukázat a okomentovat. K běhu scriptu přepokládám, že máme vygenerované klíče jak pro roota, tak pro agenta a na serverech již existují authorized_hosts apod (komunikace tam již probíhala, ale s jiným serverem).
#!/bin/sh
if [ ! "$1" ] ; then
echo "Zadejte lokalitu."
exit 1
fi
### nejdriv pridame ROOT klic z HLAVNI_SERVER na POBOČKA (pokud již nebyl přidán)
if (ssh "$1" "cat /root/.ssh/authorized_keys | grep root@HLAVNI_SERVER" >> /dev/null );
then
echo "INFO: $1: ROOT klic root@HLAVNI_SERVER v authorized keys jiz obsazen";
else
echo "OK: $1: pridavam ROOT klic root@HLAVNI_SERVER do authorized keys";
cat /root/keys/HLAVNI_SERVER_root.id_dsa.pub | ssh "$1" "cat - >> /root/.ssh/authorized_keys"
fi;
### potom pridame AGENT klic z HLAVNI_SERVER na pobočku (pokud již nebyl přidán)
if (ssh "$1" "cat /home/agent/.ssh/authorized_keys | grep agent@HLAVNI_SERVER" >> /dev/null );
then
echo "INFO: $1: AGENT klic agent@HLAVNI_SERVER v authorized keys jiz obsazen";
else
echo "OK: $1: pridavam AGENT klic agent@HLAVNI_SERVER do authorized keys";
cat /root/keys/HLAVNI_SERVER_agent.id_dsa.pub | ssh "$1" "cat - >> /home/agent/.ssh/authorized_keys"
fi;
### nakonec pridame na HLAVNI_SERVER klic AGENT z POBOČKA (pokud již nebyl přidán)
if (ssh "HLAVNI_SERVER" "cat /home/agent/.ssh/authorized_keys | grep $1" >> /dev/null );
then
echo "INFO: HLAVNI_SERVER: AGENT klic s obsahem $1 v authorized keys jiz obsazen";
else
echo "OK: HLAVNI_SERVER: pridavam AGENT klic pobocky $1 do authorized keys";
ssh "$1" "cat /home/agent/.ssh/id_dsa.pub" | ssh "HLAVNI_SERVER" "cat - >> /home/agent/.ssh/authorized_keys"
fi;
Potom stačí udělat druhý script s jednoduchým cyklem, kde v souboru máme seznam serverů:
#!/bin/sh
echo "Spoustim script na pridani klicu SSH na pobocky
cat /data/pobocky.lst | while read line; do
echo Pridavam na server$line.local
prvni-script.sh $line
done
terms
Congratulations on your great site! Congratulations and good continuation!
Un petit mot pour vous dire que votre blog est super!