歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> ssh執行遠程服務器需要sudo提權的腳本

ssh執行遠程服務器需要sudo提權的腳本

日期:2017/3/1 16:55:19   编辑:關於Linux
ssh執行遠程服務器需要sudo提權的腳本 前言 運維是件很神奇的工作,牛逼的運維很輕松可以搞定很復雜的任務,sb的運維天天時間都耗上
可能也解決不了問題(ps:因為他把時間都花在了可以重復執行的事情上) www.2cto.com 在寫這篇博客之前,我google了一堆相關文章,大都是說修改/etc/sudoers,然後NOPASSWD:
指定的cmd,但是真心不管用,沒有遠程虛擬終端這個方法就是浮雲,ubuntu10.04 server 親測!! ssh執行遠程操作 www.2cto.com 命令格式 [html] ssh -p $port $user@$p 'cmd' $port : ssh連接端口號 $user: ssh連接用戶名 $ip:ssh連接的ip地址 cmd:遠程服務器需要執行的操作 准備工作 基於公私鑰認證或者用戶名密碼認證能確保登錄到遠程local2服務器(有點基本運維知識的人
做這個事情都不是問題) cmd如果是腳本,注意絕對路徑問題(相對路徑在遠程執行時就是坑) 不足 這個命令可以滿足我們大多數的需求,但是通常運維部署很多東西的時候需要root權限,
但是有幾處限制: 遠程服務器local2禁止root用戶登錄 在遠程服務器腳本裡轉換身份用expect需要send密碼,這樣不夠安全 執行遠程服務器需要sudo權限的腳本 ssh的-t參數 [html] -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終端,加上這個參數我們就可以在遠程
服務器的虛擬終端上輸入自己的提權密碼了,非常安全 命令格式 [html] ssh -t -p $port $user@$ip 'cmd' 示例腳本 [html] #!/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執行遠程服務器的腳本 www.2cto.com 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虛擬出一個遠程服務器的終端, 在多台服務器同時部署時確實節約了不少時間啊!
Copyright © Linux教程網 All Rights Reserved