Hogyan lehet automatizálni egy ilyen feladatot?
Feladat: saját gépről be ssh-zni egy távoli gépre, majd azon a gépen belül még tovább ssh-zni egy belső szerverre, majd ott futtatni sudo-val egy process-t
Ezt milyen eszközzel lehetne automatizálni?
Próbáltam írni rá egy shell scriptet ami bekéri 1x a felhasználótól a user/pw-t (minden felhasználónak ugyanaz a user/pw-je minden szerveren) majd azt használja végig a script, és így automatizálnám ezt a folyamatot. De rizikósnak láttam, hogy plain textként kezeljem benne a jelszót, mert így akár history-ból is kileshető másnak a jelszava.
Tudom használhatnék ssh key-t és akkor nem kellene jelszóval csesződni, de a sudo-hoz így is kell a végén pw-t megadni.
Sajnos nem jó a cronjob, mert nem fix időközönként kell a feladatot elvégezni.
Leszek konkrétabb. MySQL dumpokat szoktak kérni és ez a folyamat általában így néz ki: ssh, ssh, sudo su, mysqldump db-name > db-name.sql, exit, exit, scp, exit, scp, elküldöm neki a dumpot.
Van, hogy hetente 4-5x kérnek dumpot, van, hogy 2 hétig semmit.
SSH configban jumphost beallit és máris ssh belsogepneve és benn is vagy egy paranccsal. Ha id-t küldesz at jelszo se kell.
Ddns esetén már nem tudom de valami hostcheck disable is segít hogy ne legyen kérdés.
A login kész. A sudo -t nehéz megoldani mert jelszót kér de a belső gépre rsa id esetén a root logint engednem. Így máris root@belsogepnev -kent be tudsz lépni.
Vagy éppen Googlen keress rá sudoers neven hogyan kell password nélküli sudo -t csinálni ekkor csak egy konkrét command lefut password nélkül.
Én így csinálnám, de majd jön olyan akiért hozzá.
4-es nagyjából elmondta, használj kulcsot, ahelyett, hogy scriptből próbálsz jelszót beírni. Néhány kiegészítés még:
Jumphostot az ssh_config fájlban a ProxyJump bejegyzéssel tudsz csinálni. A ProxyJump legyen a célgép Host definíciója alatt, így:
Host ide_akarok_menni
ProxyJump ezen_keresztül
Ha az ugróhostnak dinamikus DNSe van, akkor célszerű lehet a CheckHostIP paramétert "no"-ra állítani az ssh_config-ban (hogy ne ugasson, ha változik az IP-hez rendelt név).
Ahhoz, hogy mysqldumpot futtass, nem feltétlenül kell sudo, ha be tudsz csatlakozni rootként az adatbázisba. Állítsd be, hogy a root mysql user tudjon localhostról csatlakozni, és nem kell sudoznod. Ha ilyet nem lehet, akkor marad a sudoers piszkálás. Viszont így mindenképpen jelszó nélkül állítsd be a sudot, mert nem lesz terminalod, ha csak parancsot futtatsz (vagy add meg a "-t" kapcsolót az SSHnak, hogy legyen).
Mivel a mysqldump eleve a standard outputra írja a kimenetet, így scp-re sem lesz szükséged, ha megcsinálod, amit terveztél, mivel az átirányítás a helyi gépen lesz érvényes, így eleve nálad fogja leírni a fájlt.
4 vagyok , addicionális info
a proxyjump helyett a proxycommand is hasznalható pl igy:
ProxyCommand ssh jumpservercime nc -q0 belsogépcime 22
logikusan a jumpszerver cime kiegészíthető loginnev@jumpszervercime -re is, és akkor kényelmesen állítható hogy a jumpszerverre más néven lép be mint a belső gépre,
illetve a ddns-hez még ez is kell:
StrictHostKeyChecking no
illetve ha külső hálón van, mivel sql dump javarészt tömöríthető, nem tudom mennyi az adat, de érdemes lehet tömöríteni a Compression yes -el
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!