1. 程式人生 > >ssh執行遠端伺服器需要sudo提權的指令碼

ssh執行遠端伺服器需要sudo提權的指令碼

前言

運維是件很神奇的工作,牛逼的運維很輕鬆可以搞定很複雜的任務,sb的運維天天時間都耗上可能也解決不了問題(ps:因為他把時間都花在了可以重複執行的事情上) 在寫這篇部落格之前,我google了一堆相關文章,大都是說修改/etc/sudoers,然後NOPASSWD:指定的cmd,但是真心不管用,沒有遠端虛擬終端這個方法就是浮雲,ubuntu10.04 server 親測!!

ssh執行遠端操作

命令格式

ssh -p $port [email protected]$p 'cmd'

$port : ssh連線埠號
$user: ssh連線使用者名稱
$ip:ssh連線的ip地址
cmd:遠端伺服器需要執行的操作

準備工作

  • 基於公私鑰認證或者使用者名稱密碼認證能確保登入到遠端local2伺服器(有點基本運維知識的人做這個事情都不是問題)
  • cmd如果是指令碼,注意絕對路徑問題(相對路徑在遠端執行時就是坑)

不足

這個命令可以滿足我們大多數的需求,但是通常運維部署很多東西的時候需要root許可權,但是有幾處限制:
  • 遠端伺服器local2禁止root使用者登入
  • 在遠端伺服器腳本里轉換身份用expect需要send密碼,這樣不夠安全

執行遠端伺服器需要sudo許可權的指令碼

ssh的-t引數

 -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終端,加上這個引數我們就可以在遠端伺服器的虛擬終端上輸入自己的提權密碼了,非常安全

命令格式

ssh -t -p $port [email protected]$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執行遠端伺服器的指令碼
for ip in ${ip_array[*]}
do
	if [ $ip = "192.168.1.1" ]; then
		port="7777"
	else
		port="22"
	fi
	ssh -t -p $port 
[email protected]
$ip "remote_cmd" done

後記

這個方法還是很方便的,-t虛擬出一個遠端伺服器的終端,在多臺伺服器同時部署時確實節約了不少時間啊!

相關推薦

ssh執行遠端伺服器需要sudo指令碼

前言 運維是件很神奇的工作,牛逼的運維很輕鬆可以搞定很複雜的任務,sb的運維天天時間都耗上可能也解決不了問題(ps:因為他把時間都花在了可以重複執行的事情上) 在寫這篇部落格之前,我google了一堆相關文章,大都是說修改/etc/sudoers,然後NOPASSWD:指

通過SSH遠端伺服器(不登陸)執行命令

背景:在運維工作中需要遠端管理多臺linux伺服器,並在伺服器上執行指令碼/命令來收集相關資料。為了提高運維效率,整理以下指令碼 前期準備:設定跳板機免密碼登陸到伺服器 指令碼: 以下指令碼實現功能,在遠端伺服器192.168.4.12儲存主機名到/opt/hostname [[em

linux ssh遠端伺服器執行命令和crontab中執行命令提示命令找不到的問題

使用ssh ip "hadoop" 命令時,提示找不到hadoop命令。 因為hadoop是在/etc/profile配置的,ssh到一臺伺服器上時,會執行使用者環境。 而ssh到一臺伺服器上,帶著命

ECShop全系列版本遠端程式碼執行高危漏洞分析+實戰

漏洞概述   ECShop的user.php檔案中的display函式的模版變數可控,導致注入,配合注入可達到遠端程式碼執行。攻擊者無需登入站點等操作,可以直接遠端寫入webshell,危害嚴重。 漏洞評級   嚴重 影響範圍   ECShop全系列版本,包括2.x

php 利用ssh執行遠端或本地liunx伺服器命令

/** * 利用ssh執行 遠端或本地liunx伺服器命令 * 雖然可以用 shee_exec來執行本地機命令 但卻無法選擇用哪個使用者來執行 此函式可解決此類問題 * $host ssh 主機名 可以為ip 或 域名 * $port ssh 埠 * $ssh_u

Docker普通用戶不使用sudo

登錄 docker add 系統 解決方法 user dock eboot pad 解決方法 sudo groupadd docker 添加Docker用戶組 sudo gpasswd -a ${USER} docker 添加你的用戶到Docker用戶組 reboot 重

sudo實戰講解 對用戶對組的限配置分析

final recommend com 例子 它的 對組 times 操作系統 rect Linux是多用戶多任務的操作系統, 共享該系統的用戶往往不只一個。出於安全性考慮, 有必要通過useradd創建一些非root用戶, 只讓它們擁有不完全的權限; 如有必要,再來提升權

ssh連線遠端伺服器:ssh_exchange_identification: read: Connection reset by peer

查閱資料這是伺服器超過使用者最大連線數,雲伺服器後臺遠端連線修改一下自動連線數: ----> -----> 輸入密碼遠端連線之後: 進入usr目錄,然後輸入:  vi /etc/ssh/sshd_config  按i編輯,修改這個引

Mac ssh連線遠端伺服器,並實現檔案的上傳和下載

使用scp命令實現上傳下載 1、從伺服器上下載檔案 scp [email protected]:/path/filename /Users/mac/Desktop(本地目錄) 例如:scp [email protected]:/root/test.txt /Users/mac/Desk

怎麼用ssh開啟遠端伺服器上的teamviewer (shit!弄這玩意花了我大半天時間)

必須記錄一下在我裝軟體道路上的其中一個絆腳石,狗血經歷,開學一個月了,裝軟體裝的我懷疑人生,我的研究生生活難道要就此止步於裝軟體了?。。。想起剛開始裝docker,接著又是SimpleElastix ,現在又卡在裝Matlab ,每個都得花我好幾天時間,我遇到的錯誤也是奇葩,各種找不到解決辦

MAC實用SSH連線遠端伺服器,並實現檔案上傳下載

MAC作為程式設計師的神器,在程式設計上的使用遠超window的電腦,而MAC本身提供了SSH功能,配合VIM編輯器對程式設計十分有幫助。 使用ssh連線遠端主機   sudo -i 切換root許可權 ssh [email protected] 其中,

怎麼用ssh開啟遠端伺服器上的teamviewer (shit!弄這玩意花了我大半天時間)

必須記錄一下在我裝軟體道路上的其中一個絆腳石,狗血經歷,開學一個月了,裝軟體裝的我懷疑人生,我的研究生生活難道要就此止步於裝軟體了?。。。想起剛開始裝docker,接著又是SimpleElastix ,現在又卡在裝Matlab ,每個都得花我好幾天時間,我遇到的

Windows使用ssh登入遠端伺服器(包含mac版)

windows 首先Windows是沒有ssh這個命令的,所以我們先要使Windows可以使用ssh命令 現在可以用ssh來登入一般的遠端伺服器,當然有一些需要伺服器需要==私鑰檔案==,這時候我們可以使用ssh windows的客戶端來實現。

ubuntu無法ssh遠端伺服器

1 問題 openstack環境下建立了一個虛擬機器,為虛擬機器分配了浮動IP: 192.168.50.61。但是從ubuntu14.04伺服器192.168.50.5上無法ssh到虛擬機器伺服器,SSH [email protected] 就沒有反應,也沒有報錯

Windows下使用ssh登入遠端伺服器及檔案傳輸

由於實驗室的GPU叢集是放在伺服器上的,需要用SSH登入,之前沒有接觸過SSH,因此把摸索的過程記錄下來,以備後用。 Windows上安裝SSH客戶端 我用的是Putty 選擇第一個框的64-bit下載,安裝即可。 登入遠端伺服器 在右側H

Mac終端使用ssh操作遠端伺服器

最近把騰訊雲伺服器重灌了下,換了centos系統,因為用的mac,一直找不到像win下的xshell那種遠端連線的工具,查了下資料,憑藉mac牛的不要不要的終端就可以完成遠端的連線操作 操作如下: example(例子): ssh [email&

在shell中使用expect+ssh登陸遠端伺服器

expect "*#" #等待上一條命令執行完成 send "cd /home\r" # 進入/home目錄 expect "*#" send "touch test\n" #建立檔案test expect "*#" sen

Ubuntu下使用ssh連線遠端伺服器

Ubuntu下使用ssh連線遠端服務 首先進入root,開啟.bashrc $ su [password] ... root# nano ~/.bashrc 將 ‘ssh [email 

SSH連線遠端伺服器失敗ssh connection refused 解決辦法

1.遇到的情況是客戶端遠端連線伺服器ssh失敗:ssh connection refused Could not connect to '10.5.1.101' (port 22): Connection failed2.檢查客戶端沒有問題(正常連線其他伺服器)3.檢查服務

ssh連線遠端伺服器自動斷開解決

ssh連線長時間不操作自動斷開 這個問題用ssh一段時間後就覺得很尷尬了,有時隔一小會不操作ssh連線就斷開了,重新開啟還要卡死一會. 修改伺服器端引數 如果你用多臺本地機器連線伺服器,可以考慮把伺服器端的配置作修改路徑是:/etc/ssh/s