??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。
非常期待和您一起在這個(gè)小小的網(wǎng)絡(luò)世界里共同探索、學(xué)習(xí)和成長(zhǎng)。??????
?? 歡迎訂閱本專欄 ??
一.自動(dòng)輸入密碼
場(chǎng)景:
由于多臺(tái)機(jī)必須要登陸執(zhí)行命令,需要使用密鑰一臺(tái)臺(tái)登錄,所以每次登陸機(jī)器的時(shí)候都需要手動(dòng)輸入域賬號(hào)密碼。密碼太長(zhǎng)且復(fù)雜,手動(dòng)輸入容易輸錯(cuò),故使用腳本來做這個(gè)事情,實(shí)現(xiàn)免輸入密碼登陸,工作效率大大提升!
解決方法:
- 使用 expect
- 使用 sshpass
- 結(jié)合 alfred 可以快速一鍵登錄
- 也可以使用 electerm 進(jìn)行登錄
對(duì)于我自己而言的話,用的最爽的還是使用 sshpass+alfred 一鍵登錄,先安裝 sshpass,然后使用命令
sshpass -p 你的密碼 ssh -A -g yourname@ip
登錄到服務(wù)器,然后再執(zhí)行腳本,部署自己的應(yīng)用或者博客,登錄服務(wù)器的命令用 alfred 的 workflow 來執(zhí)行,方便快捷
后續(xù)使用 cicd 來部署,每次提交即可進(jìn)行部署,不用登錄到服務(wù)器即可部署.
二.sshpass 方式
1.安裝 sshpass
sshpass
是一個(gè)實(shí)用工具,它提供了一種自動(dòng)化 SSH 密碼認(rèn)證的方式。它允許你將密碼作為命令行參數(shù)或通過環(huán)境變量傳遞給 SSH 命令,從而在非交互式方式下進(jìn)行 SSH 登錄。
使用 sshpass
可以方便地批量管理多臺(tái)服務(wù)器,同時(shí)也可以將其用于自動(dòng)化腳本或任務(wù)中,從而減少手動(dòng)輸入密碼的繁瑣。需要注意的是,使用 sshpass
可能會(huì)存在一定的安全風(fēng)險(xiǎn),因此在使用時(shí)需要謹(jǐn)慎考慮。
不能使用命令安裝,會(huì)報(bào)錯(cuò),使用源碼安裝.
使用方式:
sshpass -p 'password' ssh user@host
其中 -p
參數(shù)指定密碼,user@host
是要登錄的目標(biāo)服務(wù)器地址和用戶名。使用上述命令后,sshpass
將會(huì)自動(dòng)完成 SSH 登錄過程,而無需手動(dòng)輸入密碼。
除了使用命令行參數(shù)外,你也可以將密碼保存在環(huán)境變量中,然后通過 $ENV_VAR
的方式引用它,例如:
export SSHPASS='password'
sshpass -e ssh user@host
其中 -e
參數(shù)指示 sshpass
使用環(huán)境變量傳遞密碼。在這種方式下,你需要事先將密碼保存在 $SSHPASS
環(huán)境變量中。
需要注意的是,使用 sshpass
存在一定的安全風(fēng)險(xiǎn),因?yàn)槊艽a會(huì)以明文方式傳遞,容易被惡意程序截獲。因此,在使用 sshpass
時(shí),應(yīng)盡可能避免將密碼保存在腳本中,或者將其保存在安全加密的文件中。另外,如果可能的話,建議使用 SSH 公鑰認(rèn)證方式來代替密碼認(rèn)證。
2.源碼下載
#源碼下載
https://sourceforge.net/projects/sshpass/
3.安裝過程
#解壓縮
#安裝
cd sshpass-1.08
#執(zhí)行配置文件
./configure
#編譯
make
#編譯安裝
make install
4.驗(yàn)證
#查看版本
sshpass -V
#登錄服務(wù)器
sshpass -p 你的密碼 ssh -A -g yourname@ip
三.expect 方式
首先我們創(chuàng)建以一個(gè)文本文件,命名為 proxy.expect,內(nèi)容如下:
1.腳本
使用腳本一鍵登錄服務(wù)器
#!/usr/bin/expect
# 設(shè)置超時(shí)時(shí)間,單位秒
set timeout 10
# 主要功能是給ssh運(yùn)行進(jìn)程加個(gè)殼,用來傳遞交互指令
# ssh -A 是轉(zhuǎn)發(fā)密鑰設(shè)置,用于有堡壘機(jī)的場(chǎng)景,一般情況下不需要
spawn ssh -A root@120.79.36.53
# 判斷上次輸出結(jié)果里是否包含 Password: 的字符串,如果有則立即返回,否則就等待一段時(shí)間后返回,這里等待時(shí)長(zhǎng)就是前面設(shè)置的 10秒
expect "Password:"
# 發(fā)送密碼 \r 表示字符串結(jié)束
send "xxx.\r"
# 執(zhí)行完成后保持交互狀態(tài),把控制權(quán)交給控制臺(tái),這個(gè)時(shí)候就可以手工操作了。
# 如果沒有這一句登錄完成后會(huì)退出,而不是留在遠(yuǎn)程終端上。
interact
2.執(zhí)行
expect proxy.expect
??????本人水平有限,如有紕漏,歡迎各位大佬評(píng)論批評(píng)指正!??????
??????如果覺得這篇文對(duì)你有幫助的話,也請(qǐng)給個(gè)點(diǎn)贊、收藏下吧,非常感謝!?? ?? ??文章來源:http://www.zghlxwxcb.cn/news/detail-782807.html
??????Stay Hungry Stay Foolish 道阻且長(zhǎng),行則將至,讓我們一起加油吧!??????
文章來源地址http://www.zghlxwxcb.cn/news/detail-782807.html
到了這里,關(guān)于【linux】ssh 遠(yuǎn)程執(zhí)行命令自動(dòng)輸入密碼方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!