SSH - add script di chiavi pub
Ho ottenuto in una situazione in cui è necessario aggiungere un nuovo server ssh chiave sui 350 server delle filiali. La situazione è semplice perché il server principale presso la filiale ha già accesso, quindi basta zeditovat tutte le estensioni e aggiungere una nuova chiave.
Task:
- L'utente root sul nuovo server deve avere accesso senza una password su tutti i rami (ssh, scp), ma i rami non gli si avvicinano di nuovo
- L'agente utente sul nuovo server deve inoltre avere accesso dappertutto, l'user agent del ramo deve essere consentito l'accesso al nuovo server
Manualmente realtà non lo fanno: D in modo come sempre - lo script. Probabilmente il più semplice script per mostrare e commentare. Per eseguire lo script, ho il sospetto che abbiamo generato le chiavi per l'utente root, in qualità di agente e sui server già esistenti etc authorized_hosts (c'erano già in vie di comunicazione, ma con un server diverso).
#!/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; Poi, solo per un secondo script con un singolo ciclo, in cui abbiamo un elenco dei file 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 





















