sshpass: lielisks rīks neinteraktīvai SSH pieteikšanai - nekad nelietojiet ražošanas serverī


Vairumā gadījumu Linux sistēmas administratori piesakās attālajos Linux serveros, izmantojot SSH, iesniedzot paroli vai bez paroles SSH pieteikšanos, vai SSH autentifikāciju uz taustiņiem.

Ko darīt, ja vēlaties ievadīt paroli kopā ar lietotājvārdu pašā SSH uzvednē? tas ir, ja sshpass nāk glābt.

sshpass ir vienkāršs un viegls komandrindas rīks, kas ļauj mums nodrošināt paroli (neinteraktīvu paroles autentifikāciju) pašai komandrindai, lai varētu izpildīt automatizētus čaulas skriptus, lai izveidotu dublējumkopijas, izmantojot cron plānotāju.

ssh izmanto tiešu TTY piekļuvi, lai pārliecinātos, ka paroli faktiski nodrošina interaktīvs tastatūras lietotājs. Sshpass palaiž ssh veltītā tty, maldinot to uzskatīt, ka tā saņem paroli no interaktīva lietotāja.

Svarīgi: sshpass izmantošana tiek uzskatīta par vismazāk drošu, jo tā atklāj paroli visiem sistēmas lietotājiem komandrindā ar vienkāršu komandu “ps”. Es ļoti iesaku izmantot SSH bez paroles autentifikāciju.

Instalējiet sshpass Linux sistēmās

Sistēmās, kuru pamatā ir RedHat/CentOS, vispirms jums ir jākomandē, kā parādīts.

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

Debian/Ubuntu un tā atvasinājumos to var instalēt, izmantojot komandu apt-get, kā parādīts.

$ sudo apt-get install sshpass

Varat arī instalēt no avota, lai būtu jaunākā sshpass versija, vispirms lejupielādējiet pirmkodu un pēc tam izvelciet darvas faila saturu un instalējiet to šādi:

$ 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 

Kā Linux lietot sshpass

sshpass tiek izmantots kopā ar ssh, izsniedzot komandu, varat apskatīt visas sshpass lietošanas opcijas ar pilnu aprakstu:

$ 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

Kā jau minēju iepriekš, sshpass ir ticamāks un noderīgāks skriptu izveidošanas nolūkos, apsveriet tālāk sniegtos komandu piemērus.

Piesakieties attālajā Linux ssh serverī (10.42.0.1) ar lietotājvārdu un paroli un pārbaudiet attālās sistēmas failu sistēmas diska lietojumu, kā parādīts.

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

Svarīgi: šeit parole tiek norādīta komandrindā, kas praktiski nav droša, un šīs opcijas izmantošana nav ieteicama.

Tomēr, lai ekrānā netiktu rādīta parole, varat izmantot karodziņu -e un ievadīt paroli kā SSHPASS vides mainīgā vērtību, kā norādīts zemāk:

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

Piezīme. Iepriekš redzamajā piemērā SSHPASS vides mainīgais ir paredzēts tikai pagaidu vajadzībām un tiks noņemts pārstartēšanas laikā.

Lai neatgriezeniski iestatītu SSHPASS vides mainīgo, atveriet failu/etc/profile un faila sākumā ierakstiet eksportēšanas priekšrakstu:

export SSHPASS='my_pass_here'

Saglabājiet failu un izejiet, pēc tam izpildiet zemāk esošo komandu, lai veiktu izmaiņas:

$ source /etc/profile 

No otras puses, jūs varat arī izmantot karodziņu -f un paroli ievietot failā. Tādā veidā jūs varat izlasīt paroli no faila šādi:

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

Varat arī izmantot sshpass, lai dublētu/sinhronizētu failus, izmantojot rsync, izmantojot SSH, kā parādīts:

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

Lai izmantotu vairāk, iesaku izlasīt sshpass man lapā, ierakstiet:

$ man sshpass

Šajā rakstā mēs izskaidrojām vienkāršu rīku sshpass, kas ļauj veikt interaktīvu paroles autentifikāciju. Lai arī šie rīki var būt noderīgi, ir ļoti ieteicams izmantot ssh drošāku publiskās atslēgas autentifikācijas mehānismu.

Lūdzu, atstājiet jautājumu vai komentāru, izmantojot tālāk sniegto atsauksmju sadaļu, lai turpinātu diskusijas.