Automatizálása rendszerfelügyeletet ssh és scp

Automatizálása rendszerfelügyeletet ssh és scp

Ha kell kezelniük nagyszámú Linux / Unix rendszerek, akkor biztosan kell egy kis script, hogy automatizálják folyamatokat. Ennek során a napi munka, akkor bizonyára észrevette, hogy meg kell végezni ugyanazt vagy hasonló dolgokat minden rendszeren. Talán azt gondoltam, hogy lehet automatizálni ezeket a folyamatokat. Ez különösen igaz, ha szervizelés nagyszámú azonosan konfigurált Linux / Unix rendszerek. Ebben a cikkben megmutatom, hogyan lehet ezt ssh közművek.

Az ötlet az, hogy megtaláljuk a módját, másolás néhány fájlt a munkaállomás, amely előtt vagyok jelenleg számos munkaállomásokon és szervereken, majd futtatni ezeket a gépeket, néhány csapat, mint a futás rpm telepítés vagy változó rendszer beállításokat. Néha meg kell először futtatni ezeket a gépeket, néhány parancsot, majd kap a fájlokat - az eredmény a következő parancsokat.

Ahhoz, hogy ezt a cikket megköveteli annak megértését, a shell programozás. További információt a programozás a héj, lásd. Cikk Katie és Guido Socher (Katja és Guido Socher) a LinuxFocus Shell programozás. Azt is el kell ismerni a ssh segédprogramok, mint például az ssh-keygen, az ssh-add, ssh, scp, vagy sftp. Van egy ingyenes implementációja az SSH protokoll Linux alatt: OpenSSH. tartalmazza az összes ezeket az eszközöket. Vannak is man oldalak (man oldalak).

Miért használja az ssh?

Kérdés a kérdést: Miért nem? Használhatja rsh RCP vagy telnet-ftp, ezek nem alkalmasak a nem biztonságos környezetben, mint például az internet, és talán és Intranet. SSH biztonságos, titkosított kommunikáció két gazdagép között egy biztonságos hálózat. Nem fogok beszélni biztonsági kérdéseket, amikor ezekkel az eszközökkel. Olvassa el a cikket George Tarburicha (Georges Tarbouriech) keresztül az alagút (az alagútban).
Tény, hogy a múltban, szkriptek alapján telnet / ftp.

Fájl másolása a helyi könyvtárat a távoli számítógépre, akkor használja a következő parancsot:

SCP / path / to / a / file / fájl1 felhasználó @ REMOTE_HOST: / remotedir / újfájl

Ebben a példában fájl neve fájl1 átmásolja a helyi mappa a távoli gépre (REMOTE_HOST lehet az IP megnevezése vagy a távoli számítógép) a / remotedir új névvel újfájl. Azt kéri, hogy hitelesítse a neve „user”. Abban az esetben sikeres hitelesítés, és ha a felhasználó rendelkezik a megfelelő engedélyekkel, a fájl másolása. Nem adhat meg egy új fájlnevet. Ebben az esetben a fájl lesz másolva a régi nevét. Röviden, ez azt jelenti, hogy nevezze át a fájlt, ha másolni.
Ennek az ellenkezője is lehetséges: lehet másolni egy fájlt a távoli számítógépről a helyi könyvtárba:

scp felhasználó @ REMOTE_HOST: / remotedir / file / path / to / local / mappa / újfájl

Van is egy nagyon kényelmes jellemzője az scp paranccsal. „-r” megadásával a kulcsot, akkor másolja a könyvtárra.

scp -r user @ REMOTE_HOST: / remotedir.

Ez a parancs átmásolja „remotedir” könyvtárat és annak összes alkönyvtárakat és fájlokat távoli számítógépről a jelenlegi üzemi könyvtár ugyanazzal a névvel.

Megjegyzés: Feltételezzük, hogy a távoli számítógépen fut a démon sshd.

Távoli bejelentkezés ssh

Ahelyett, rlogin és telnet lehet használni a biztonságosabb - ssh:

Parancsok végrehajtása ssh

Lehetőség van az ssh parancsokat futtat a távoli számítógépen:

ssh [email protected] df -H

Ez nagyon távoli bejelentkezés szintaxis. A különbségek után kezdődik a számítógép nevét. A parancs (ebben a példában "df -h) a végrehajtás egy távoli számítógépen. A kimenet akkor is megjelenik a terminálon.

Csatlakozás egy távoli számítógéphez, jelszó nélkül

egy pár kulcsot lehet használni ahelyett, hogy a jelszó-hitelesítés (állami / magán). Be kell, hogy létrehoz egy kulcspárt. Van egy eszköz ssh-keygen, amelyeket fel lehet használni, hogy létrehoz kulcsok ssh:

ssh-keygen -t dsa -b 1024

A rendszer kérni fogja a nevét a privát kulcs. Neve a nyilvános kulcs általában ugyanaz, mint a privát kulcsot azzal a kiegészítéssel, „.pub”. Itt „-b 1024” a bitek száma generált kulcsot. Ha ez az érték nincs megadva, akkor az alapértelmezett érték. „-t dsa” típusát adja kulcs jön létre. Lehetséges értékek: „rsa1” protokoll 1. verzió és a „RSA” vagy „DSA” protokoll verzió 2. Azt javasoljuk 2. verziója az SSH protokoll. De ha a régi szerverek, amelyek támogatják a csak protokoll 1. verzió, akkor meg kell adnia „-t rsa1”, hogy hozzon létre egy másik kulcspárt. Megadása „-1” vagy „-2” Rá lehet kényszeríteni ssh protokoll verzió 1, illetve 2.

Ahhoz, hogy a kulcsot, akkor be kell állítani a nyilvános kulcsot a távoli számítógéphez. A csomag tartalma a nyilvános kulcs fájlt kell másolni vagy hozzáadott fájlba
$ HOME / .ssh / authorized_keys vagy $ HOME / .ssh / authorized_keys2. Legyen óvatos, és ne keverjük össze kulcsokat különböző protokoll változatok. Mert verzió 1 protokollt használunk authorized_keys, és 2-es verzió a protokoll authorized_keys2. Ha megfelelően telepítette a nyilvános kulcsot, a legelső alkalommal csatlakozik ehhez a számítógéphez fogják kérni, hogy adja meg a jelszót (jelszót), és meghibásodás esetén, kérni fogja a távoli felhasználó jelszavát. Akkor korlátozhatja kapcsolatot a rendszerek, amelyek csak nyilvános kulcs hitelesítés A konfigurációs fájl szerkesztése az sshd. fájlnév
/ Etc / ssh / sshd_config és a paraméter nevét, hogy meg kell változtatni „PasswordAuthentication”. Megváltoztatni ezt a paramétert nem (PasswordAuthentication nem), és indítsa újra az sshd.

minden rendben van eddig a pontig. Van egy biztonságos módja a másolás és parancsok távoli rendszereket. De automatizálásával egyes feladatokat nem kell beírni jelszavakat vagy jelmondat. Ellenkező esetben nem tudjuk automatizálni semmit. Persze lehetne írni a forgatókönyvet minden szükséges jelszót, de ez nem egy jó ötlet. Sokkal jobb, hogy bízza meg a szer kulcs (-szer), hogy vigyázzon a jelmondat. ssh-agent - egy olyan program, hogy tartsa magán használt kulcsokat nyilvános kulcs hitelesítés. Meg kell kezdeni a kulcs-szer:

és add meg a privát kulcsot kell használni

id_dsa - ez DSA privát kulcsot és identitás - RSA1 privát kulcs fájlt. Ez - az alapértelmezett fájlnevek során megadott kulcsgenerálás keresztül ssh-keygen. Persze, akkor a program kérni fogja a jelszót, mielőtt az ssh-add hozzáadja a legfontosabb, hogy a szer segítségével. List kulcsot hoz nyerhető a következő paranccsal:

Ha ssh-szer a fentiekben ismertetett eljárás, akkor lehet használni csak egy terminál, amelyben indult. Ahhoz, hogy használni ssh-agent bármely nyiss egy terminált akkor meg kell dolgozni egy kicsit. Írtam egy kis szkript indítására az ügynök:

Ha a szer, és fut akkor add meg a kulcsokat. De előtte el kell végezni agent_info fájlt, hogy az ssh eszközökkel tudja, hol a szer:

És adja meg a kulcsot az ssh-add. Akkor adjunk hozzá néhány sort a .bashrc fájlt úgy, hogy minden alkalommal, amikor megnyit egy új terminál végzi agent_info file:

FIGYELEM: Meg kell biztosítani a fogadó ahonnan használja az ssh-agent és az automatizált szkript, amely fogok itt leírni. Ellenkező esetben, ha valaki nyer hozzáférést a fiókjához, akkor van, hogy minden kiszolgálóra kommunikálni ssh kulcsokat. Meg kell fizetni mindent!

Most itt az ideje, hogy magyarázza el, hogyan fogunk automatizálni egyes feladatokat a rendszergazda. Az ötlet az, hogy végezze el a különböző parancsokat a konkrét házigazdák és másolni néhány fájlt, vagy ezek a gépek. Ez az, amit gyakran kell foglalkozni a rendszergazdák. Itt látható a script:

Írjunk egy szkriptet ainstal.sh (automatikus telepítés - automatikus telepítés), és megpróbálja futtatni a paraméterek nélkül. Kapunk az üzenetet:

Ezzel összhangban az üzenetet, ha nem akarja futtatni parancsokat, hagyja, hogy az érvelés commands.txt commands_empty.txt nevét, és ha nem szeretné átvinni a fájlokat, hogy a neve az érvelés files_file files_empty.txt. Néha, sőt, csak akkor kell végrehajtani egyes parancsok, máskor csak át néhány fájlt.

Mielőtt bemutatnánk a forgatókönyvet, így például a felhasználásra: Tegyük fel, hogy van hozzá egy másodlagos DNS-szerver hálózati és szeretnék hozzá, hogy az /etc/resolv.conf fájlt. Az egyszerűség kedvéért tételezzük fel, hogy az összes hoszt ugyanazt resolv.conf fájlt. Ebben az esetben, az egyetlen dolog, amit meg kell tennie, hogy másolja az új resolv.conf fájlt az összes gép.
Az első dolog, amire szüksége van - ez egy listát a házigazdák. Írja mindet HOSTS.TXT fájlt. A fájl formátuma a úgy, hogy minden sorban szerepel a neve vagy IP csak egy fogadó. Itt egy példa:

Mint látható a példából, megadhatja a teljes nevét vagy csak egy részét meghatározó számítógép nevét. Ezen kívül szükség van egy fájl, amelyben a fájl nevét kell írni, hogy át. Kétféle átadás:

  • A helyi fogadó házigazdák felsorolt ​​HOSTS.TXT fájlt. Ez a típusú transzfer, amire szükségünk van.
  • Minden a házigazdák felsorolt ​​HOSTS.TXT fájlt a helyi gépen. Ez az, amikor szükség van, hogy bizonyos fájlokat minden gazda. Például, egy egyszerű backup szkript, amely fogom leírni a cikk későbbi részében.

Files átviendő sorolja másik fájlt. Nevezzük ezt files_file.txt fájlt. Files_file.txt formátum a következő: Minden sorban tartalmaz információt, hogyan lehet másolni csak egy fájlt. Kétféleképpen fel: l2r (helyi és távoli - helyi és távoli) és R2L (távoli helyi - távoli és helyi). l2r - ez az, amikor egy fájl másolása a helyi gazda a távoli. R2L - ha egy fájl egy távoli gépről van másolva a helyi. Miután az irányt kulcsszó jön két fájl nevét. Fields szóközzel vannak elválasztva, vagy fülek. Az első fájl másolása a második szerint a kulcsszó irányba. A fájl neve a távoli gazda teljes mértékben ki kell minősíteni, ellenkező esetben a fájl másolása a root home könyvtár. Íme a files_file.txt:

Mint látható, már benne van a fájl struktúra ismertetése. Én általában tartalmaznak egy leírást minden egyes files_file.txt fájl, amit használni. Ez egy egyszerű, de jó megoldás dokumentációt. Ebben a példában a másolni kívánt fájlt resolv.conf egy távoli számítógépen nevű /etc/resolv.conf. A bemutató kedvéért másolás után azt a hely házigazdák tettem hozzá parancsok megváltoztatni a tulajdonos és a csoport egy fájlt, és megjeleníti a tartalmát a /etc/resolv.conf. Parancsokat kell végrehajtani helyezzük egy külön fájlban. Nevezzük commands_file.txt. Íme a fájl commands_file.txt:

parancsok parancsokat tartalmaz, amelyeket figyelembe kell végezni minden olyan számítógépen szerepel a HOSTS.TXT fájlt. A parancsok végrehajtása szekvenciálisan, ami azt jelenti, hogy az első parancs végrehajtása az első, majd a második, és így tovább.

Nos, most már az összes szükséges fájlokat az egyszerű példát. Az egyetlen dolog maradt hátra, hogy meghatározza a módot, amely meghatározza, hogy mely két fájlt: commands_file.txt vagy files_file.txt először feldolgozni. Akkor át a felsorolt ​​fájlok files_file.txt fájlt, majd végrehajtja a parancsokat a cél gép, mód 1. Vagy fordítva, futtatni parancsokat, majd transzfer a fájlokat, ez az üzemmód 2. Most fut a script-nek a szükséges érveket az alábbiak szerint :

/ainstall.sh 1 HOSTS.TXT files_file.txt commands_file.txt

A jótanács: általában a fájlnév files.txt kezdek files_ és egy rövid leíró név például files_resolvconf.txt. Hasonlóképpen, hívom HOSTS.TXT és commands.txt.

/.ssh/agent_info”, akkor kerül végrehajtásra. Ez a fájl tartalmaz információt a futó ügynök ssh. Ha nem használ egy ügynök, akkor meg kell adnia a jelszavakat, vagy jelmondatok kézzel, ami azt jelenti, nem automatizálás :). Ezután minden fájl (hosts, fájlok és parancsok) teszteltünk létezését. Van egy speciális teszt files_empty.txt és commands_empty.txt. Ha megad egy nevet, majd ellenőrzi, hogy megvannak nem szükséges. Én változott ez a része a script ezt a cikket. Korábban úgy volt, csak:

Egyszerű biztonsági másolatot a konfigurációs fájlok

Itt van egy fejlettebb használat a forgatókönyvet. Az ötlet az, hogy biztonsági másolatot a konfigurációs fájlok az összes számítógép, vagy szerver. Ebből a célból írtam egy kis scriptet, amely ainstall.sh:

Van egy speciális nevű könyvtárba szerverek kell létrehozni. Ez a könyvtár két fájlt: files_getbackup.txt és ll_servers.txt. Itt files_getbackup.txt "file:

R2L /root/backup.tgz backup.tgz

„Ll_servers.txt” neveit tartalmazza, vagy IP házigazdák kell alátámasztani. Minden hostname szerepel a „ll_servers.txt” fájlt kell egy könyvtárat, az azonos nevű, amelynek meg kell commands_make_backups.txt fájlt, amely tartalmazza a parancsokat létrehozni /root/backup.tgz archívum konfigurációs fájlok azon a gépen. És nevű könyvtárba mentés. Minden biztonsági másolat fájlok fogadó lesz ebben a könyvtárban tárolt. ll_servers.txt fájl tartalmazza: