你的服务器我来管linux提权,ssh执行远程服务器需要sudo提权的脚本

编程入门 行业动态 更新时间:2024-10-24 04:32:06

你的<a href=https://www.elefans.com/category/jswz/34/1771423.html style=服务器我来管linux提权,ssh执行远程服务器需要sudo提权的脚本"/>

你的服务器我来管linux提权,ssh执行远程服务器需要sudo提权的脚本

前言

运维是件很神奇的工作,牛逼的运维很轻松可以搞定很复杂的任务,sb的运维天天时间都耗上可能也解决不了问题(ps:因为他把时间都花在了可以重复执行的事情上)

在写这篇文章之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,Ubuntu 10.04 server 亲测!!

ssh执行远程操作

命令格式

ssh -p $port $user@$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 $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执行远程服务器的脚本

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虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!

更多推荐

你的服务器我来管linux提权,ssh执行远程服务器需要sudo提权的脚本

本文发布于:2024-03-11 20:00:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1729788.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:服务器   我来   脚本   sudo   提权

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!