sshpass: En exzellent Tool fir net-interaktiven SSH Login - Benotzt ni op Produktiounsserver


An deene meeschte Fäll Login Linux System Administrateuren op Remote Linux Server mat SSH entweder andeems Dir e Passwuert liwwert, oder Passwuertlos SSH Login, oder Schlësselbaséiert SSH Authentifikatioun.

Wat wann Dir e Passwuert zesumme mam Benotzernumm wëllt ubidden fir SSH selwer ze froen? hei kënnt sshpass fir ze retten.

sshpass ass en einfacht a liicht Kommandozeil-Tool dat et eis erlaabt Passwuert (net-interaktiv Passwuert Authentifikatioun) un d'Kommandoprompt selwer ze bidden, sou datt automatiséiert Shell-Skripte ausgefouert kënne ginn fir Backups iwwer Cron Scheduler ze huelen.

ssh benotzt direkten TTY Zougang fir sécherzestellen datt d'Passwuert tatsächlech vun engem interaktiven Tastatur Benotzer geliwwert gëtt. Sshpass leeft ssh an engem engagéierten tty, falsch et ze gleewen datt et d'Passwuert vun engem interaktiven Benotzer kritt.

Wichteg: Benotzt sshpass gëllt als am mannsten sécher, well et de Passwuert un all System Benotzer op der Kommandozeil mat einfachen ps Kommando weist. Ech recommandéieren SSH Passwuertlos Authentifikatioun ze benotzen.

Installéiert sshpass op Linux Systemer

A RedHat/CentOS baséiert Systemer, musst Dir als éischt de Kommando yum wéi gewisen.

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

Op Debian/Ubuntu a seng Derivate kënnt Dir se mat apt-get Kommando installéieren wéi gewisen.

$ sudo apt-get install sshpass

Alternativ kënnt Dir vun der Quell installéieren fir déi lescht Versioun vum sshpass ze hunn, als éischt de Quellcode eroflueden an dann den Inhalt vun der Tar-Datei extrahéieren an se esou installéieren:

$ 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 

Wéi benotzen ech sshpass op Linux

sshpass gëtt zesumme mat ssh benotzt, Dir kënnt all d'sshpass Benotzungsoptioune mat voller Beschreiwunge kucken andeems Dir de Kommando hei drënner ausstellt:

$ 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

Wéi ech virdru scho gesot hunn, ass sshpass méi zouverlässeg an nëtzlech fir Skriptzwecker, betruecht d'Beispill Kommandoen hei drënner.

Login op de Remote Linux ssh Server (10.42.0.1) mam Benotzernumm a Passwuert a kontrolléiert d'Dateisystemdiskussioun vum Fernsystem wéi gewisen.

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

Wichteg: Hei gëtt d'Passwuert op der Kommandozeil geliwwert, déi praktesch onsécher ass an dës Optioun ze benotzen ass net recommandéiert.

Wéi och ëmmer, fir Äert Passwuert um Bildschierm ze weisen, kënnt Dir de -e Fändel benotzen an d'Passwuert als Wäert vun der SSHPASS Ëmfeldvariabel aginn wéi hei ënnendrënner:

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

Bemierkung: Am Beispill hei uewen ass SSHPASS Ëmfeldvariabel nëmme fir temporär Zwecker a gëtt wärend dem Neistart geläscht.

Fir d'SSHPASS Ëmfeldvariabel permanent ze setzen, öffnen d' /etc/profile Datei an tippt d'Exporterklärung am Ufank vun der Datei:

export SSHPASS='my_pass_here'

Späichert d'Datei a gitt eraus, da fuert de Kommando hei ënnen fir d'Ännerungen auszeféieren:

$ source /etc/profile 

Op der anerer Säit kënnt Dir och de -f Fändel benotzen an d'Passwuert an eng Datei setzen. Op dës Manéier kënnt Dir d'Passwuert aus der Datei liesen wéi follegt:

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

Dir kënnt och sshpass benotze fir Dateien iwwer rsync ze backen/synchroniséieren mat SSH wéi gewisen:

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

Fir méi Notzung, proposéieren ech Iech duerch d'sshpass Man Säit ze liesen, Typ:

$ man sshpass

An dësem Artikel hu mir sshpass en einfacht Tool erkläert dat net-interaktiv Passwuert Authentifikatioun erméiglecht. Och wann dës Tools hëllefräich kënne sinn, ass et héich recommandéiert de ssh méi sécheren ëffentleche Schlëssel Authentifikatiounsmechanismus ze benotzen.

Gitt w.e.g. eng Fro oder Kommentar iwwer d'Feedback Sektioun hei drënner fir weider Diskussiounen.