sshpass: Usa ka Maayo nga Himan alang sa Non-Interactive SSH Login - Dili Gayud Gamit sa Production Server


Sa kadaghanan nga mga kaso, ang mga administrador sa sistema sa Linux nag-log in sa mga hilit nga server sa Linux gamit ang SSH pinaagi sa paghatag usa ka password, o wala’y password nga pag-login sa SSH, o pag-authenticate sa SSH nga nakabase sa key.

Unsa kaha kung gusto nimo maghatag usa ka password kauban ang username sa SSH prompt mismo? dinhi ang sshpass moabut aron sa pagluwas.

Ang sshpass maoy usa ka yano ug gaan nga command line tool nga makapahimo kanamo sa paghatag og password (non-interactive password authentication) sa command prompt mismo, aron ang mga automated shell scripts mahimo nga ipatuman sa pagkuha sa mga backup pinaagi sa cron scheduler.

Ang ssh naggamit og tul-id nga TTY nga pag-access aron masiguro nga ang password sa tinuud gihatag sa usa ka interactive nga tiggamit sa keyboard. Ang Sshpass nagpadagan sa ssh sa usa ka debotado nga tty, nagpahisalaag niini sa pagtuo nga kini nakadawat sa password gikan sa usa ka interactive nga tiggamit.

Importante: Ang paggamit sa sshpass giisip nga dili kaayo luwas, tungod kay kini nagpadayag sa password sa tanang mga tiggamit sa sistema sa command line nga adunay yano nga ps nga sugo. Girekomenda nako ang paggamit sa SSH Passwordless authentication.

I-install ang sshpass sa Linux Systems

Sa mga sistema nga nakabase sa RedHat/CentOS, una kinahanglan nimo nga yum command sama sa gipakita.

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

Sa Debian/Ubuntu ug sa mga derivatives niini, mahimo nimo kining i-install gamit ang apt-get command sama sa gipakita.

$ sudo apt-get install sshpass

Sa laing paagi, mahimo nimong i-install gikan sa tinubdan aron adunay pinakabag-o nga bersyon sa sshpass, una nga i-download ang source code ug dayon kuhaa ang sulod sa tar file ug i-install kini sama niini:

$ 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 

Giunsa Paggamit ang sshpass sa Linux

Ang sshpass gigamit kauban ang ssh, mahimo nimong tan-awon ang tanan nga mga kapilian sa paggamit sa sshpass nga adunay bug-os nga mga paghulagway pinaagi sa pag-isyu sa mando sa ubos:

$ 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

Sama sa akong gihisgutan kaniadto, ang sshpass mas kasaligan ug mapuslanon alang sa mga katuyoan sa pag-script, hunahunaa ang mga pananglitan nga mga sugo sa ubos.

Pag-login sa hilit nga Linux ssh server (10.42.0.1) gamit ang username ug password ug susiha ang file-system disk usage sa remote system sama sa gipakita.

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

Importante: Dinhi, ang password gihatag sa command line nga halos dili sigurado ug ang paggamit niini nga opsyon dili girekomenda.

Apan, aron mapugngan ang pagpakita sa password sa screen, mahimo nimong gamiton ang -e nga bandila ug isulod ang password isip usa ka bili sa SSHPASS environment variable sama sa ubos:

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

Mubo nga sulat: Sa pananglitan sa ibabaw, ang SSHPASS environment variable kay temporaryo lang nga katuyoan ug tangtangon sa panahon sa reboot.

Aron permanenteng itakda ang SSHPASS environment variable, ablihi ang /etc/profile file ug i-type ang export statement sa sinugdanan sa file:

export SSHPASS='my_pass_here'

I-save ang file ug paggawas, dayon padagana ang command sa ubos aron ma-epekto ang mga pagbag-o:

$ source /etc/profile 

Sa laing bahin, mahimo usab nimong gamiton ang -f nga bandila ug ibutang ang password sa usa ka file. Niining paagiha, mabasa nimo ang password gikan sa file sama sa mosunod:

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

Mahimo usab nimo gamiton ang sshpass sa pag-backup/pag-sync sa mga file sa rsync gamit ang SSH sama sa gipakita:

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

Para sa dugang nga paggamit, gisugyot ko nga basahon nimo ang sshpass man page, type:

$ man sshpass

Niini nga artikulo, among gipatin-aw ang sshpass nga usa ka yano nga himan nga makahimo sa non-interactive nga pag-authenticate sa password. Bisan pa, kini nga mga himan mahimo’g makatabang, girekomenda nga gamiton ang labi ka luwas nga mekanismo sa pag-authenticate sa publiko nga yawe sa ssh.

Palihug, pagbilin usa ka pangutana o komento pinaagi sa seksyon sa feedback sa ubos para sa bisan unsang dugang nga mga diskusyon.