sshpass: Chombo Bora cha Kuingia kwa SSH Isiyo na Maingiliano - Usitumie Kamwe kwenye Seva ya Uzalishaji


Mara nyingi, wasimamizi wa mfumo wa Linux huingia kwenye seva za mbali za Linux kwa kutumia SSH ama kwa kutoa nenosiri, au kuingia kwa SSH bila nenosiri, au uthibitishaji wa ufunguo wa SSH.

Je, ikiwa unataka kutoa nenosiri pamoja na jina la mtumiaji kwa SSH haraka yenyewe? hapa ndipo sshpass inakuja kuokoa.

sshpass ni zana rahisi na nyepesi ya mstari wa amri ambayo hutuwezesha kutoa nenosiri (uthibitishaji wa nenosiri lisiloingiliana) kwa haraka ya amri yenyewe, ili hati za kiotomatiki za shell ziweze kutekelezwa ili kuchukua chelezo kupitia kipanga ratiba cha cron.

ssh hutumia ufikiaji wa moja kwa moja wa TTY ili kuhakikisha kuwa nenosiri limetolewa na mtumiaji wa kibodi anayeingiliana. Sshpass huendesha ssh katika tty iliyojitolea, kuipotosha kwa kuamini kuwa inapokea nenosiri kutoka kwa mtumiaji anayeingiliana.

Muhimu: Kutumia sshpass inachukuliwa kuwa salama kidogo, kwani inaonyesha nenosiri kwa watumiaji wote wa mfumo kwenye mstari wa amri na amri rahisi ya ps. Ninapendekeza sana kutumia uthibitishaji wa Nenosiri la SSH.

Sakinisha sshpass kwenye Mifumo ya Linux

Katika mifumo ya msingi ya RedHat/CentOS, kwanza unahitaji yum amri kama inavyoonyeshwa.

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

Kwenye Debian/Ubuntu na derivatives yake, unaweza kuisanikisha kwa kutumia apt-get amri kama inavyoonyeshwa.

$ sudo apt-get install sshpass

Vinginevyo, unaweza kusakinisha kutoka kwa chanzo ili kuwa na toleo la hivi punde la sshpass, kwanza pakua msimbo wa chanzo kisha utoe yaliyomo kwenye faili ya tar na uisakinishe kama hivyo:

$ 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 

Jinsi ya kutumia sshpass kwenye Linux

sshpass inatumika pamoja na ssh, unaweza kutazama chaguzi zote za utumiaji wa sshpass na maelezo kamili kwa kutoa amri hapa chini:

$ 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

Kama nilivyosema hapo awali, sshpass ni ya kuaminika zaidi na muhimu kwa madhumuni ya uandishi, fikiria amri za mfano hapa chini.

Ingia kwenye seva ya mbali ya Linux ssh (10.42.0.1) ukitumia jina la mtumiaji na nenosiri na uangalie matumizi ya diski ya mfumo wa faili ya mfumo wa mbali kama inavyoonyeshwa.

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

Muhimu: Hapa, nenosiri limetolewa kwenye mstari wa amri ambayo ni kivitendo isiyo salama na kutumia chaguo hili haipendekezi.

Hata hivyo, ili kuzuia kuonyesha nenosiri kwenye skrini, unaweza kutumia alama ya -e na uweke nenosiri kama thamani ya mabadiliko ya mazingira ya SSHPASS kama ilivyo hapo chini:

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

Kumbuka: Katika mfano hapo juu, utofauti wa mazingira wa SSHPASS ni kwa madhumuni ya muda tu na utaondolewa wakati wa kuwasha upya.

Ili kuweka kabisa utofauti wa mazingira wa SSHPASS, fungua /etc/profile faili na uandike taarifa ya usafirishaji mwanzoni mwa faili:

export SSHPASS='my_pass_here'

Hifadhi faili na uondoke, kisha endesha amri hapa chini ili kufanya mabadiliko:

$ source /etc/profile 

Kwa upande mwingine, unaweza pia kutumia -f bendera na kuweka nenosiri katika faili. Kwa njia hii, unaweza kusoma nenosiri kutoka kwa faili kama ifuatavyo:

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

Unaweza pia kutumia sshpass kuhifadhi/kusawazisha faili kwa kutumia rsync kwa kutumia SSH kama inavyoonyeshwa:

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

Kwa matumizi zaidi, ninapendekeza usome kupitia ukurasa wa mtu wa sshpass, chapa:

$ man sshpass

Katika makala haya, tulielezea sshpass zana rahisi inayowezesha uthibitishaji wa nenosiri usioingiliana. Ingawa, zana hizi zinaweza kusaidia, inashauriwa sana kutumia utaratibu salama zaidi wa uthibitishaji wa ufunguo wa umma wa ssh.

Tafadhali, acha swali au maoni kupitia sehemu ya maoni hapa chini kwa majadiliano yoyote zaidi.