sshpass: Erinomainen työkalu ei-interaktiiviseen SSH-kirjautumiseen - älä koskaan käytä tuotantopalvelimella


Useimmissa tapauksissa Linux-järjestelmänvalvojat kirjautuvat Linux-etäpalvelimiin SSH:n avulla joko antamalla salasanan tai salasanattoman SSH-kirjautumisen tai avainpohjaisen SSH-todennuksen.

Entä jos haluat antaa salasanan ja käyttäjätunnuksen itse SSH-kehotteeseen? tässä sshpass tulee apuun.

sshpass on yksinkertainen ja kevyt komentorivityökalu, jonka avulla voimme tarjota salasanan (ei-interaktiivinen salasanatodennus) itse komentokehotteeseen, jotta automaattiset komentotulkkikomentosarjat voidaan suorittaa varmuuskopioiden tekemiseksi cron-aikataulun kautta.

ssh käyttää suoraa TTY-käyttöä varmistaakseen, että vuorovaikutteisen näppäimistön käyttäjä todella antaa salasanan. Sshpass suorittaa ssh:n omistetussa tty:ssä, johda se harhaan uskomaan, että se saa salasanan interaktiiviselta käyttäjältä.

Tärkeää: sshpassin käyttö pidetään vähiten turvallisena, koska se paljastaa salasanan kaikille järjestelmän käyttäjille komentorivillä yksinkertaisella “ps”-komento. Suosittelen käyttämään SSH-salasanatonta todennusta.

Asenna sshpass Linux-järjestelmiin

RedHat/CentOS-pohjaisissa järjestelmissä sinun on ensin otettava Epel-tietovarasto käyttöön järjestelmässäsi, jotta se voidaan asentaa yum-komennolla kuvan mukaisesti.

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

Debian/Ubuntussa ja sen johdannaisissa voit asentaa sen apt-get-komennolla kuvan osoittamalla tavalla.

sudo apt-get install sshpass

Vaihtoehtoisesti voit asentaa lähteestä saadaksesi uusimman version sshpassista. Lataa ensin lähdekoodi ja pura sitten tar-tiedoston sisältö ja asenna se seuraavasti:

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 

Kuinka käyttää sshpassia Linuxissa

sshpass-komentoa käytetään yhdessä ssh:n kanssa, voit tarkastella kaikkia sshpass-käyttövaihtoehtoja täydellisillä kuvauksilla antamalla alla olevan komennon:

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

Kuten aiemmin mainitsin, sshpass on luotettavampi ja hyödyllisempi komentosarjatarkoituksiin. Harkitse alla olevia esimerkkikomentoja.

Kirjaudu Linuxin ssh-etäpalvelimelle (10.42.0.1) käyttäjätunnuksella ja salasanalla ja tarkista etäjärjestelmän tiedostojärjestelmän levyn käyttö kuvan mukaisesti.

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

Tärkeää: Tässä salasana annetaan komentorivillä, mikä on käytännössä turvaton, eikä tämän vaihtoehdon käyttöä suositella.

Voit kuitenkin estää salasanan näyttämisen näytöllä käyttämällä -e-lippua ja syöttämällä salasanan SSHPASS-ympäristömuuttujan arvoksi seuraavasti:

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

Huomaa: Yllä olevassa esimerkissä ympäristömuuttuja SSHPASS on vain väliaikaista tarkoitusta varten, ja se poistetaan uudelleenkäynnistyksen yhteydessä.

Voit asettaa SSHPASS-ympäristömuuttujan pysyvästi avaamalla tiedoston /etc/profile ja kirjoittamalla vientilausekkeen tiedoston alkuun:

export SSHPASS='my_pass_here'

Tallenna tiedosto ja poistu ja suorita sitten alla oleva komento tehdäksesi muutokset:

source /etc/profile 

Toisaalta voit myös käyttää -f-lippua ja laittaa salasanan tiedostoon. Tällä tavalla voit lukea salasanan tiedostosta seuraavasti:

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

Voit myös käyttää sshpassia tiedostojen siirtämiseen scp:n avulla tai varmuuskopio-/synkronointitiedostot rsyncin kautta SSH:n avulla, kuten kuvassa:

------- 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/

Lisäkäyttöä varten suosittelen, että luet sshpass-man-sivun ja kirjoitat:

man sshpass

Tässä artikkelissa selitimme sshpassin yksinkertaisen työkalun, joka mahdollistaa ei-interaktiivisen salasanatodennuksen. Vaikka nämä työkalut voivat olla hyödyllisiä, on erittäin suositeltavaa käyttää ssh:n turvallisempaa julkisen avaimen todennusmekanismia.

Jätä kysymys tai kommentti alla olevan palauteosion kautta lisäkeskusteluja varten.