<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
搭建了一套有多臺主機的區域網環境,不完全考慮安全性的情況下,為方便管理區域網內主機,設定SSH免密登入,因主機較多,前陣子針對設定ssh免密和取消ssh免密功能單獨寫了指令碼來自動化批次部署,現把兩個功能封裝在一起做成互動式程式
#!/bin/bash #Author:cosann #Version:0.2 #date:2022/7/27 #description:批次部署SSH免密登入指令碼 E_ERROR=65 #傳參檢測 if [ $# -ne 1 ] then echo -e "Usage:$0 ip_list_file " exit E_ERROR fi #檔案檢測 if [ ! -f "$1" ] then echo -e "IP_List_File $1檔案異常,請檢查內容" exit E_ERROR fi #初始化 ip_list_file=$1 #從文字讀取值初始化變數 ip_address=(`awk '{print $1}' $ip_list_file`) username=(`awk '{print $2}' $ip_list_file`) password=(`awk '{print $3}' $ip_list_file`) #安裝軟體檢測及部署環境設定 echo -e "》》》開始檢測依賴的必須元件是否安裝》》》n" if [ `rpm -qa | grep "expect" &> /dev/null;echo $?` -ne 0 ] then echo -e "未安裝必須元件Expect,開始執行安裝,請稍等..." ( yum install -y expect &> /dev/null && echo -e ">Expect安裝完成!" ) || ( echo -e "部署必須元件Expect失敗,請檢查Yum設定" && exit E_ERROR ) elif [ `rpm -qa | grep "openssl" &> /dev/null;echo $?` -ne 0 ] then ( yum install -y openssh &> /dev/null && echo -e ">Openssh安裝完成!" ) || ( echo -e "部署必須元件Openssh失敗,請檢查Yum設定" && exit E_ERROR ) elif [ `rpm -qa | grep "openssh-clients" &> /dev/null;echo $?` -ne 0 ] then ( yum install -y openssh-clients &> /dev/null && echo -e ">Openssh-clients安裝完成!" ) || ( echo -e "部署必須元件Openssh-clients失敗,請檢查Yum設定" && exit E_ERROR ) else echo -e ">必須元件Expect已安裝" echo -e ">必須元件Openssh已安裝" echo -e ">必須元件Openssh-clients已安裝" fi #列印選單 echo -e "n===============================================" echo -e "該指令碼可以實現批次部署和刪除SSH免密設定" echo -e "Author:Cosann" echo -e "Create time:2022/07/27" echo -e "===============================================" while : do echo -e ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" echo -e "1. 設定SHH免密登入" echo -e "2. 取消SHH免密設定" echo -e "3. 退出程式" #功能控制及實現 read -p "請輸入序號>>> " nu if [[ "$nu" == "3" ]] then #退出程式 echo -e "n###!!!感謝使用,再見!!!###" exit 0 elif [[ "$nu" == "1" ]] then echo "開始推播" #檢測公鑰檔案是否存在,不存在則生成 if [ ! -e "$HOME/.ssh/id_rsa.pub" ];then ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa else echo -e "》》》已建立公鑰檔案,開始向遠端伺服器推播公鑰》》》" fi #迴圈控制 count=`grep -v '^$' $ip_list_file | wc -l ` for (( i=0;i<$count;i++ )) do #echo -e "${ip_address[$i]}t${username[$i]}t${password[$i]}" #自動化互動實現推播ssh公鑰 /usr/bin/expect<<-EOF spawn ssh-copy-id -i $HOME/.ssh/id_rsa.pub ${username[$i]}@${ip_address[$i]} expect { "*yes/no" { send "yesr";exp_continue } "*password" { send "${password[$i]}r" } } expect eof EOF done echo -e "--------------------------------------------------------------------------------------" echo -e "--------------------------------------------------------------------------------------" echo -e "--------------------------------------------------------------------------------------" echo -e "###推播完成,嘗試免密登入###" #推播公鑰成功免密結果通知 for (( i=0;i<$count;i++ )) do /usr/bin/expect<<-EOF spawn ssh ${username[$i]}@${ip_address[$i]} expect "*]#" send "echo "##登入成功##"r" expect "*]#" send "exitr" EOF done echo -e "-------------------------------------------" echo -e "已完成SHH免密設定,請嘗試SHH登入遠端主機確認" elif [[ "$nu" == "2" ]] then #自動化互動實現刪除設定免密的遠端主機上的authorized_keys count=`grep -v '^$' $ip_list_file | wc -l ` for (( i=0;i<$count;i++ )) do /usr/bin/expect<<-EOF spawn ssh ${username[$i]}@${ip_address[$i]} expect "*]#" send "rm -f /root/.ssh/authorized_keys 2> /dev/nullr" expect "*]#" send "exitr" EOF done echo -e "-------------------------------------------" echo -e "已取消SHH免密設定,請嘗試SHH登入遠端主機確認" else echo -e " 33[41;37m 非法輸入,請檢查輸入!!! 33[0m" fi done
3.1 使用前準備將程式碼複製到指令碼檔案,賦予執行許可權提前準備好IP地址使用者密碼檔案
3.2 IP地址使用者密碼檔案格式(注意!!!)
3.3 執行指令碼
#指令碼名 IP地址使用者密碼檔案 #舉例 ./ssh.sh host.txt #指令碼會判斷呼叫指令碼是否有指定IP地址使用者密碼檔案,沒有的情況下會執行指令碼失敗並提示
4.1 IP地址使用者密碼檔案格式請按照以上圖示標準填寫,內容不正確時會出現等待ssh登入或者重試的結果,這時候需要檢查組態檔的使用者名稱或者密碼是否錯誤
4.2 未在設定ssh免密的情況使用指令碼,需要多次ctrl+c強制退出指令碼
到此這篇關於Shell自動化設定SSH免密登入和取消SSH免密設定指令碼 的文章就介紹到這了,更多相關Shell SSH免密登入內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45