linux利用ssh遠程執行多臺機器執行一樣的命令

這篇文章主要介紹了ssh遠程執行命令方法和Shell腳本實例,本文講解了ssh執行遠程操做方法和遠程執行命令shell腳本示例,須要的朋友能夠參考下

ssh執行遠程操做
命令格式代碼以下:shell

ssh -t -p$port $user@$ip 「cmd」 
$port : ssh鏈接端口號
$user: ssh鏈接用戶名
$ip:ssh鏈接的ip地址
-t :提供一個遠程服務器的虛擬tty終端
cmd:遠程服務器須要執行的操做
 

ssh -o ConnectTimeout=3 -o ConnectionAttempts=5 -o PasswordAuthentication=no -o StrictHostKeyChecking=no $ip 「command」安全

1 ConnectTimeout=3 鏈接時超時時間,3秒 
2 ConnectionAttempts=5 鏈接失敗後重試次數,5次 
3 PasswordAuthentication=no 是否使用密碼認證,(在遇到沒作信任關係時很是有用,否則會卡在那裏) 
4 StrictHostKeyChecking=no 第一次登錄服務器時自動拉取key文件,(跟上面同樣,而且在第一次ssh登錄時,自動應答yes) 
5 ServerAliveInterval=60 設置保持鏈接時間,即爲了保持會話,每隔60s向服務端發一次信號。bash

 

準備工做服務器

基於公私鑰認證或者用戶名密碼認證能確保登陸到遠程服務器(有點基本運維知識的人作這個事情都不是問題)運維

cmd若是是腳本,注意絕對路徑問題(相對路徑在遠程執行時就是坑)ssh

配置ssh免登陸:post

首先找一臺管理機(隨便那臺機器什麼配置均可以,只要能和遠程執行的機器通訊就行)rest

(1)ssh-keygen -t rsa.                   ###生成公鑰/私鑰對code

(2)ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.162     ###拷貝到遠程機器上,自動把cat id_rsa.pub >> .ssh/authorized_keys步驟執行。在對方目錄下就會看到authorized_keys,不然,拷貝過去要手動執行這個命令blog

不足

這個命令能夠知足咱們大多數的需求,可是一般運維部署不少東西的時候須要root權限,可是有幾處限制:
遠程服務器禁止root用戶登陸
在遠程服務器腳本里轉換身份用expect須要send密碼,這樣不夠安全

示例腳本

#!/bin/bash

#變量定義
ip_array=("192.168.0.162")   ##主機列表能夠寫在括號裏,多個主機空格分割,也能夠寫個文件-主機清單
user="root"
remote_cmd="/etc/init.d/sshd restart"
port="22"
#本地經過ssh執行遠程服務器的腳本
for ip in ${ip_array[*]}
do
ssh -t -p${port} ${user}@${ip} "${remote_cmd}" >> /var/log/ssh.log
done

相關文章
相關標籤/搜索