Tartalom
Bevezető
Rendszeres, terminálban végzett munka során gyakran kell átjelentkezni más számítógépekre SSH-n keresztül. Egy idő után fárasztóvá válik a sok jelszó begépelése, amikor például a felügyeletünk alatt álló szerverre kell belépnünk és ott egy-egy parancsot kell lefuttatnunk, vagy megnéznünk a log fájlokat. Arról nem beszélve hogy a jelszó bekérés miatt automatizált feladatokat sem végezhetünk a távoli gépeken, amit a helyi gépről kellene indítanunk. Ebben a leírásban oldjuk meg ezt a problémát.
Előfeltételek
Első körben rendelkeznünk kell a megfelelő eszközökkel, amikkel létrehozzuk a nyilvános kulcsot és eljuttatjuk a cél gépre. Erre a legkézenfekvőbb csomag az openssh-client. Ez az egyik legelterjedtebb nyílt forráskódú SSH kliens programcsomag Debianra, ami a kliens mellett tartalmazza a számunkra szükséges parancsokat. Amennyiben még nincs telepítve a rendszerünkre, pótoljuk az APT csomagkezelő segítségével:
apt-get install openssh-client
A csomagból nekünk most magán az SSH-n kívül az ssh-keygen és az ssh-copy-id parancsokra lesz szükségünk.
Jelen példában tételezzük fel, hogy a forrás gépünk neve ahonnan át szeretnénk jelentkezni a cél gépbe localhost, a cél gép neve pedig remotehost. A felhasználónevünk pedig az egyszerűség kedvéért legyen mindkét gépen user. Így tehát a user@localhost -ról szeretnénk jelszó használata nélkül átjelentkezni SSH-n a user@remotehost -ra.
Nyilvános kulcs generálása
Először generáljunk magunknak kulcsokat a forrás gépen (user@localhost). Ehhez egyszerűen futtassuk a következő parancsot:
ssh-keygen
Ekkor bekér pár dolgot, ezekre üssünk enter-eket:
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): [Enter] Enter passphrase (empty for no passphrase): [Enter] Enter same passphrase again: [Enter] Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 9e:2c:7b:4c:a0:8f:97:b9:5e:ab:50:b8:05:18:f1:55 user@localhost The key's randomart image is: +---[RSA 2048]----+ | o. ..E | | + . | | . o | | o. | | ..o.S | | .+ o.. | | oo.== | | ..=+o. | | o=+. | +-----------------+
A legenerált kulcspárt a /home/user/.ssh/ könyvtárban helyezi el, ahol a fiók privát kulcsa az id_rsa fájl, és a nyilvános kulcs pedig az id_rsa.pub fájl.
Nyilvános kulcs felmásolása
Ha ezzel megvagyunk, akkor az ssh-copy-id paranccsal másoljuk fel a cél helyre a nyilvános kulcsot:
ssh-copy-id -i /home/user/.ssh/id_rsa.pub user@remotehost
ssh-copy-id -i /home/user/.ssh/id_rsa.pub user@remotehost -p <portszám>
Itt a -i kapcsolóval adjuk meg a nyilvános kulcs elérését, így biztosak lehetünk benne, hogy a megfelelő fájl kerül felmásolásra. Ezután a program felmásolja a kulcsot a cél helyre, de közben először megerősítést kér a műveletre, utána bekéri egyszer a cél fiók SSH jelszavát. A kimenet tehát:
The authenticity of host '[remotehost] ([192.168.1.10])' can't be established. ECDSA key fingerprint is 41:fe:b9:e0:22:4d:20:07:bd:db:80:da:b8:85:25:1e. Are you sure you want to continue connecting (yes/no)? yes [Enter] /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys user@remotehost's password: (adjuk meg a cél állomás SSH jelszavát) Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'user@remotehost'" and check to make sure that only the key(s) you wanted were added.
Ezzel készen is vagyunk. Teszteljük a jelszó nélküli belépést az ssh paranccsal:
ssh user@remotehost
Ha minden jól sikerült, akkor egyből meg is jelenik a MOTD szöveg, majd alatta a prompt:
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. user@remotehost:~$
A nyilvános kulcsok a fájlban sortörésekkel vannak elválasztva, így szerkesztőprogrammal megnyitva látszanak a forrás helyek user@host formában a kulcsok után. Így szükség esetén kézzel könnyedén eltávolítható a már feleslegessé vált forrásgép nyilvános kulcsa a teljes sor eltávolításával.
Konklúzió
Ezután már kényelmesen használhatjuk az SSH vagy SCP parancsokat shell scriptjeinkben anélkül, hogy jelszavainkat bárhol meg kellene adnunk. Így például cron-ból is végrehajthatjuk a távoli weboldal backup scriptünket, vagy bármi egyebet, ami SSH belépést igényel.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 1938 megtekintés