sshpass: Et fremragende værktøj til ikke-interaktiv SSH-login - Brug aldrig på produktionsserver


I de fleste tilfælde logger Linux-systemadministratorer på eksterne Linux-servere ved hjælp af SSH enten ved at angive en adgangskode eller adgangskodeløs SSH-login eller nøglebaseret SSH-godkendelse.

Hvad hvis du vil angive en adgangskode sammen med brugernavnet til selve SSH-prompt? det er her, sshpass kommer til redning.

sshpass er et simpelt og let kommandolinjeværktøj, der gør det muligt for os at give adgangskode (ikke-interaktiv adgangskodegodkendelse) til selve kommandoprompten, så automatiske shell-scripts kan udføres for at tage sikkerhedskopier via cron scheduler.

ssh bruger lige TTY-adgang for at sikre, at adgangskoden faktisk leveres af en interaktiv tastaturbruger. Sshpass kører ssh i en hengiven tty, vildleder den til at tro, at den modtager adgangskoden fra en interaktiv bruger.

Vigtigt: Brug af sshpass anses for at være mindst sikkert, da det afslører adgangskoden til alle systembrugere på kommandolinjen med simpel "ps" -kommando. Jeg kan varmt anbefale at bruge SSH adgangskodeløs godkendelse.

Installer sshpass på Linux-systemer

I RedHat/CentOS-baserede systemer skal du først yum-kommandoen som vist.

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

På Debian/Ubuntu og dets derivater kan du installere det ved hjælp af apt-get-kommandoen som vist.

$ sudo apt-get install sshpass

Alternativt kan du installere fra kilde til at have den nyeste version af sshpass, først downloade kildekoden og derefter udpakke indhold af tarfilen og installere den sådan:

$ 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 

Sådan bruges sshpass i Linux

sshpass bruges sammen med ssh, du kan se alle indstillingerne for sshpass med fulde beskrivelser ved at udstede kommandoen nedenfor:

$ 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

Som jeg nævnte før, er sshpass mere pålidelig og nyttig til scripting formål. Overvej eksemplerne nedenfor.

Log ind på fjern Linux ssh-server (10.42.0.1) med brugernavnet og adgangskoden, og kontroller filsystemets diskbrug af fjernsystemet som vist.

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

Vigtigt: Her gives adgangskoden på kommandolinjen, som praktisk talt er usikker, og brug af denne mulighed anbefales ikke.

For at forhindre visning af adgangskode på skærmen kan du dog bruge flaget -e og indtaste adgangskoden som en værdi af SSHPASS-miljøvariablen som nedenfor:

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

Bemærk: I eksemplet ovenfor er SSHPASS-miljøvariablen kun til midlertidigt formål og fjernes under genstart.

For at indstille miljøvariablen SSHPASS permanent skal du åbne/etc/profilfilen og skrive eksporterklæringen i begyndelsen af filen:

export SSHPASS='my_pass_here'

Gem filen og afslut, og kør derefter kommandoen nedenfor for at foretage ændringerne:

$ source /etc/profile 

På den anden side kan du også bruge flagget -f og sætte adgangskoden i en fil. På denne måde kan du læse adgangskoden fra filen som følger:

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

Du kan også bruge sshpass til at sikkerhedskopiere/synkronisere filer via rsync ved hjælp af SSH som vist:

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

For mere brug, foreslår jeg dig at læse igennem sshpass man-siden, skriv:

$ man sshpass

I denne artikel forklarede vi sshpass et simpelt værktøj, der muliggør ikke-interaktiv adgangskodegodkendelse. Selvom disse værktøjer kan være nyttige, anbefales det stærkt at bruge sshs mere sikre godkendelsesmekanisme for offentlig nøgle.

Venligst skriv et spørgsmål eller en kommentar via feedbackafsnittet nedenfor for yderligere diskussioner.