-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
shell腳本實(shí)現(xiàn)ssh登錄(shell腳本ssh登錄服務(wù)器)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于shell腳本實(shí)現(xiàn)ssh登錄的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來(lái)看看吧。
ChatGPT國(guó)內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、【shell】CentOS7.x上sshpass的安裝使用
OpenSSH 自帶的 ssh 客戶端程序(也就是 ssh命令)默認(rèn)不允許你以非交互的方式傳遞密碼。
很多時(shí)候我們?cè)诖_定安全的情況下,對(duì)ssh的交互登錄"深惡痛絕",所以就需要進(jìn)行免密登錄。
ssh登陸不能在命令行中指定密碼,sshpass的出現(xiàn),解決了這一問題。
sshpass用于非交互SSH的密碼驗(yàn)證,一般用在sh腳本中,無(wú)須再次輸入密碼(本機(jī)known_hosts文件中有的主機(jī)才能生效)。它允許你用 -p 參數(shù)指定明文密碼,然后直接登錄遠(yuǎn)程服務(wù)器,它支持密碼從命令行、文件、環(huán)境變量中讀取。
ssh命令, 沒有指定密碼的參數(shù). 以至于在腳本中使用ssh命令的時(shí)候, 必須手動(dòng)輸入密碼, 才能繼續(xù)執(zhí)行. 這樣使得腳本的自動(dòng)化執(zhí)行變得很差, 尤其當(dāng)ssh對(duì)應(yīng)的機(jī)器數(shù)很多的時(shí)候, 會(huì)令人抓狂.使用非交互式樣有兩種方式: 一種借助expect腳本, 一種借助sshpass來(lái)實(shí)現(xiàn)。
# wget https://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
# tar zxf sshpass-1.06.tar.gz
# cd sshpass-1.06
# ./configure --prefix=/usr/local/
# make && make install
# yum -y install sshpass
# yum info sshpass
注:如果用rpm的方式安裝ansible,sshpass是作為依賴安裝的。
# sshpass -h
# sshpass -p "123456" ssh -o 'StrictHostKeyChecking=no' root@192.168.1.100
# sshpass -p "123456" ssh -o 'StrictHostKeyChecking=no' root@192.168.1.100 -v
注:第一次登陸務(wù)必加上 -o 'StrictHostKeyChecking=no' 選項(xiàng),或者保險(xiǎn)起見,每次加上
non-interactive ssh password auth
https://nchc.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
sshpass 用法舉例
https://www.cnblogs.com/nf01/articles/10756100.html
Linux ssh命令詳解
https://www.cnblogs.com/ftl1012/p/ssh.html
sshpass的使用方法
https://www.cnblogs.com/misswangxing/p/10637718.html
用expect做服務(wù)器的批量互信
https://www.jianshu.com/p/632e7efb59f5
二、Linux。。shell 腳本中經(jīng)常要用到ssh??墒莝sh又要交互式輸密碼。怎么能不交互的輸密碼呢?
1、登錄A機(jī)器
2、ssh-keygen -t [rsa|dsa],將會(huì)在~/.ssh下生成密鑰文件和私鑰文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、將 .pub 文件復(fù)制到B機(jī)器的 .ssh 目錄, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,從A機(jī)器登錄B機(jī)器的目標(biāo)賬戶,不再需要密碼了(直接運(yùn)行 #ssh 192.168.1.100 )
面交互輸入,就得使用expect腳本,例:
#!/bin/bash
passwd='123456'
/usr/bin/expect <<-EOF
set time 30
spawn ssh root@192.168.1.100
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect "*#"
send "cd /home/trunk\r"
expect "*#"
send "ls\r"
expect "*#"
send "exit\r"
interact
expect eof
EOF
三、怎么在一個(gè)shell腳本中執(zhí)行遠(yuǎn)程主機(jī)的另一個(gè)shell腳本?? ssh已經(jīng)可以無(wú)密碼登錄了。
假設(shè)你要操作的是遠(yuǎn)程服務(wù)器
IP為:1.1.1.1
操作的腳本是 :/home/a.sh
操作命令為
ssh 1.1.1.1 “/bin/bash /home/a.sh”
四、如何使用shell腳本修改linux的登陸密碼
編寫mssh.sh腳本
內(nèi)容如下
1.
#!/usr/bin/expect
-f
2.
#auto
ssh
login
3.
set
timeout
30
4.
set
sshhost
[lindex
$argv
0]
5.
spawn
ssh
-llizongbo
-p13800
$sshhost
6.
expect
“password:”
7.
send
“l(fā)izongbo_618119\r”
8.
interact
給文件加上可執(zhí)行權(quán)限
chmod
+x
./mssh.sh
如果文件默認(rèn)有其它權(quán)限,建議最好設(shè)置為只能自己讀取,修改和執(zhí)行
chmod
700
./mssh.sh
測(cè)試成功:
./mssh.sh
618119.com
直接登錄到了
618119.com
以上就是關(guān)于shell腳本實(shí)現(xiàn)ssh登錄相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
景觀設(shè)計(jì)方案內(nèi)容(景觀設(shè)計(jì)方案內(nèi)容怎么寫)