這篇文章給大家分享的是有關(guān)linux中如何使用sshpass的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比南開(kāi)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式南開(kāi)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南開(kāi)地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。
在大多數(shù)情況下,Linux 系統(tǒng)管理員使用 SSH 登錄到程 Linux 服務(wù)器時(shí),要么是通過(guò)密碼,要么是無(wú)密碼 SSH 登錄或基于密鑰的 SSH 身份驗(yàn)證。
如果你想自動(dòng)在 SSH 登錄提示符中提供密碼和用戶(hù)名怎么辦?這時(shí) sshpass 就可以幫到你了。
sshpass 是一個(gè)簡(jiǎn)單、輕量級(jí)的命令行工具,通過(guò)它我們能夠向命令提示符本身提供密碼(非交互式密碼驗(yàn)證),這樣就可以通過(guò) cron 調(diào)度器執(zhí)行自動(dòng)化的 shell 腳本進(jìn)行備份。
ssh 直接使用 TTY 訪問(wèn),以確保密碼是用戶(hù)鍵盤(pán)輸入的。 sshpass 在專(zhuān)門(mén)的 tty 中運(yùn)行 ssh,以誤導(dǎo) ssh 相信它是從用戶(hù)接收到的密碼。
重要:使用 sshpass 是最不安全的,因?yàn)樗邢到y(tǒng)上的用戶(hù)在命令行中通過(guò)簡(jiǎn)單的 “ps” 命令就可看到密碼。因此,如果必要,比如說(shuō)在生產(chǎn)環(huán)境,我強(qiáng)烈建議使用 SSH 無(wú)密碼身份驗(yàn)證。
在 Linux 中安裝 sshpass
在基于 RedHat/CentOS 的系統(tǒng)中,首先需要啟用 EPEL 倉(cāng)庫(kù)并使用 yum 命令安裝它。
# yum install sshpass # dnf install sshpass [Fedora 22 及以上版本]
在 Debian/Ubuntu 和它的衍生版中,你可以使用 apt-get 命令來(lái)安裝。
$ sudo apt-get install sshpass
另外,你也可以從***的源碼安裝 sshpass,首先下載源碼并從 tar 文件中解壓出內(nèi)容:
$ 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
如何在 Linux 中使用 sshpass
sshpass 與 ssh 一起使用,使用下面的命令可以查看 sshpass 的使用選項(xiàng)的完整描述:
$ sshpass -h
下面為顯示的 sshpass 幫助內(nèi)容:
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
正如我之前提到的,sshpass 在用于腳本時(shí)才更可靠及更有用,請(qǐng)看下面的示例命令。
使用用戶(hù)名和密碼登錄到遠(yuǎn)程 Linux ssh 服務(wù)器(10.42.0.1),并檢查文件系統(tǒng)磁盤(pán)使用情況,如圖所示。
$ sshpass -p 'my_pass_here' ssh aaronkilik@10.42.0.1 'df -h'
重要提示:此處,在命令行中提供了密碼,這是不安全的,不建議使用此選項(xiàng)。
sshpass – 使用 SSH 遠(yuǎn)程登錄 Linux
但是,為了防止在屏幕上顯示密碼,可以使用 -e 標(biāo)志,并將密碼作為 SSHPASS 環(huán)境變量的值輸入,如下所示:
$ export SSHPASS='my_pass_here' $ echo $SSHPASS $ sshpass -e ssh aaronkilik@10.42.0.1 'df -h'
sshpass – 在終端中隱藏密碼
注意:在上面的示例中,SSHPASS 環(huán)境變量?jī)H用于臨時(shí)目的,并將在重新啟動(dòng)后刪除。
要***設(shè)置 SSHPASS 環(huán)境變量,打開(kāi) /etc/profile 文件,并在文件開(kāi)頭輸入 export 語(yǔ)句:
export SSHPASS='my_pass_here'
保存文件并退出,接著運(yùn)行下面的命令使更改生效:
$ source /etc/profile
另外,也可以使用 -f 標(biāo)志,并把密碼放在一個(gè)文件中。 這樣,您可以從文件中讀取密碼,如下所示:
$ sshpass -f password_filename ssh aaronkilik@10.42.0.1 'df -h'
sshpass – 在登錄時(shí)提供密碼文件
你也可以使用 sshpass 通過(guò) scp 傳輸文件或者 rsync 備份/同步文件,如下所示:
------- 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/
更多的用法,建議閱讀 sshpass 的 man 頁(yè)面,輸入:
$ man sshpass
感謝各位的閱讀!關(guān)于“l(fā)inux中如何使用sshpass”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!