Weboldal keresés

sshpass: Kiváló eszköz a nem interaktív SSH-bejelentkezéshez - Soha ne használja a termelési szerveren


A legtöbb esetben a Linux rendszergazdák SSH használatával jelentkeznek be távoli Linux szerverekre vagy jelszó megadásával, vagy jelszó nélküli SSH-bejelentkezéssel, vagy kulcsalapú SSH-hitelesítéssel.

Mi a teendő, ha egy jelszót a felhasználónévvel együtt szeretne megadni magának az SSH-promptnak? itt jön meg az sshpass.

Az sshpass egy egyszerű és könnyű parancssori eszköz, amely lehetővé teszi számunkra, hogy jelszót (nem interaktív jelszó-hitelesítést) biztosítsunk magának a parancssornak, így automatizált shell-szkriptek futtathatók biztonsági mentések készítéséhez a cron ütemezőn keresztül.

Az ssh egyenes TTY hozzáférést használ, hogy megbizonyosodjon arról, hogy a jelszót valóban egy interaktív billentyűzet felhasználó adja meg. Az Sshpass az ssh-t egy dedikált tty-ben futtatja, félrevezetve azt, hogy azt higgye, hogy egy interaktív felhasználótól kapja a jelszót.

Fontos: Az sshpass használata a legkevésbé biztonságosnak tekinthető, mivel az egyszerű parancssorban felfedi a jelszót a rendszer összes felhasználója számára. „ps” parancsot. Erősen javaslom az SSH jelszó nélküli hitelesítés használatát.

Az sshpass telepítése Linux rendszerekre

A RedHat/CentOS alapú rendszerekben először engedélyeznie kell az Epel tárolót a rendszeren, hogy telepítse a yum paranccsal az ábrán látható módon.

yum install sshpass
dnf install sshpass    [On Fedora 22+ versions]

A Debian/Ubuntu és származékai esetén az apt-get paranccsal telepítheti az ábrán látható módon.

sudo apt-get install sshpass

Alternatív megoldásként a forrásból telepítheti az sshpass legújabb verzióját, először töltse le a forráskódot, majd bontsa ki a tar fájl tartalmát, és telepítse a következőképpen:

wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
tar -xvf sshpass.tar.gz
cd sshpass-1.06
./configure
sudo make install 

Az sshpass használata Linuxban

Az sshpass az ssh-val együtt használatos, az alábbi parancs kiadásával megtekintheti az összes sshpass használati lehetőséget teljes leírással:

sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used

Mint korábban említettem, az sshpass megbízhatóbb és hasznosabb szkriptelési célokra, tekintse meg az alábbi példaparancsokat.

Jelentkezzen be a távoli Linux ssh-kiszolgálóra (10.42.0.1) a felhasználónévvel és jelszóval, és ellenőrizze a távoli rendszer fájlrendszer-lemezhasználatát az ábra szerint.

sshpass -p 'my_pass_here' ssh [email  'df -h' 

Fontos: Itt a jelszó a parancssorban van megadva, ami gyakorlatilag nem biztonságos, és ennek a lehetőségnek a használata nem ajánlott.

A jelszó képernyőn való megjelenítésének megakadályozása érdekében azonban használhatja a -e jelzőt, és megadhatja a jelszót az SSHPASS környezeti változó értékeként az alábbiak szerint:

export SSHPASS='my_pass_here'
echo $SSHPASS
sshpass -e ssh [email  'df -h' 

Megjegyzés: A fenti példában az SSHPASS környezeti változó csak ideiglenes célt szolgál, és az újraindítás során eltávolítjuk.

Az SSHPASS környezeti változó végleges beállításához nyissa meg az /etc/profile fájlt, és írja be az exportálási utasítást a fájl elejére:

export SSHPASS='my_pass_here'

Mentse a fájlt és lépjen ki, majd futtassa az alábbi parancsot a módosítások végrehajtásához:

source /etc/profile 

Másrészt használhatja a -f jelzőt, és elhelyezheti a jelszót egy fájlba. Így a jelszót a következőképpen olvashatja ki a fájlból:

sshpass -f password_filename ssh [email  'df -h'

Használhatja az sshpass-t is fájlok scp használatával, vagy biztonsági mentési/szinkronizálási fájlok rsync használatával SSH használatával, az ábrán látható módon:

------- Transfer Files Using SCP ------- 
scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html

------- Backup or Sync Files Using Rsync -------
rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/

További felhasználáshoz azt javaslom, hogy olvassa el az sshpass kézikönyvoldalt, és írja be:

man sshpass

Ebben a cikkben bemutattuk az sshpass egyszerű eszközt, amely lehetővé teszi a nem interaktív jelszavas hitelesítést. Bár ezek az eszközök hasznosak lehetnek, erősen ajánlott az ssh biztonságosabb nyilvános kulcsú hitelesítési mechanizmusának használata.

Kérjük, hagyjon fel kérdést vagy megjegyzést az alábbi visszajelzési részben, ha további vitákat szeretne folytatni.