寫這篇博客之前,我google了一堆相關(guān)文章,大都是說修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,沒有遠程虛擬終端這個方法就是浮云,ubuntu10.04 server 親測??!
ssh執(zhí)行遠程操作
命令格式
復制代碼 代碼如下:
ssh -p $port $user@$p 'cmd'
$port : ssh連接端口號
$user: ssh連接用戶名
$ip:ssh連接的ip地址
cmd:遠程服務器需要執(zhí)行的操作
準備工作
基于公私鑰認證或者用戶名密碼認證能確保登錄到遠程local2服務器(有點基本運維知識的人做這個事情都不是問題)
cmd如果是腳本,注意絕對路徑問題(相對路徑在遠程執(zhí)行時就是坑)
不足
這個命令可以滿足我們大多數(shù)的需求,但是通常運維部署很多東西的時候需要root權(quán)限,但是有幾處限制:
遠程服務器local2禁止root用戶登錄
在遠程服務器腳本里轉(zhuǎn)換身份用expect需要send密碼,這樣不夠安全
ssh的-t參數(shù)
復制代碼 代碼如下:
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻譯一下:就是可以提供一個遠程服務器的虛擬tty終端,加上這個參數(shù)我們就可以在遠程服務器的虛擬終端上輸入自己的提權(quán)密碼了,非常安全
命令格式
復制代碼 代碼如下:
ssh -t -p $port $user@$ip 'cmd'
示例腳本
復制代碼 代碼如下:
#!/bin/bash
#變量定義
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
#本地通過ssh執(zhí)行遠程服務器的腳本
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done
這個方法還是很方便的,-t虛擬出一個遠程服務器的終端,在多臺服務器同時部署時確實節(jié)約了不少時間??!
您可能感興趣的文章:- Windows上SSH服務器配置圖文教程
- windows 7架設OpenSSH服務器實踐
- python通過ssh-powershell監(jiān)控windows的方法
- Windows系統(tǒng)下安裝Python的SSH模塊教程
- windows7下安裝php的php-ssh2擴展教程
- ssh自動登錄的4種實現(xiàn)方法
- python paramiko實現(xiàn)ssh遠程訪問的方法
- Python實現(xiàn)建立SSH連接的方法
- 簡單架設SSH+Squid代理服務器的自由上網(wǎng)通道的方法
- 關(guān)于ssh連不上問題的解決方法(必看)
- SSH框架網(wǎng)上商城項目第30戰(zhàn)之項目總結(jié)(附源碼下載地址)
- 關(guān)于SSH 遠程執(zhí)行命令你要知道的二三事
- SSH+Jquery+Ajax框架整合
- Ubuntu下查看ssh服務是否安裝或啟動的方法
- ssh連接超時解決方法
- PowerShell小技巧之嘗試ssh登錄
- shell腳本實現(xiàn)ssh自動登錄功能分享
- linux系統(tǒng)下的ssh登錄和配置方法
- Linux ssh遠程連接斷開問題處理辦法解決
- python使用paramiko模塊實現(xiàn)ssh遠程登陸上傳文件并執(zhí)行
- 無需密碼通過ssh執(zhí)行rsync來同步文件的方法
- ubuntu16.04下安裝openssh-server報依賴錯誤的完美解決方法(非常不錯)
- windows安裝openssh并通過生成SSH密鑰登錄Linux服務器