careers
Hlavní stránka > počítače > SSH – přidání pub klíčů scriptem

SSH – přidání pub klíčů scriptem

21.06.2010rss (7,096 zobrazení) Komentuj Přejdi na komentáře

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
Categories: počítače Tags: , ,
  1. September 4th, 2017 at 07:51 | #1

    Congratulations on your great site! Congratulations and good continuation!

  2. November 29th, 2021 at 13:41 | #2

    Un petit mot pour vous dire que votre blog est super!

  1. No trackbacks yet.

IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 10 + 13 ?
Please leave these two fields as-is:

jobs
language
guidelines