我司安全加固禁止root用户远程登录,对某些需要root操作的批量工作任务执行方法如下:
1、在需要远程重启的机器上root用户登录后visudo 追加:**zqoper ALL=(ALL) NOPASSWD: ALL
注:
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
2、在gossh机器上执行:./gossh -h 10.201.162.45 -t cmd -u **zqoper -p ******** -P 22 -f "sudo reboot"
3、批量命令:./gossh -i ip.txt -t cmd -u **zqoper -p ******** -P 22 -f "sudo reboot"
其中ip.txt内容如下:
10.201.162.45
10.201.162.47
注:
ipfile 指定批量操作的ip文件,ipfile文件每行有4个字段ip|port|user|password,字段之间使用|分隔,四个字段分别是:机器IP,ssh端口,ssh用户名,ssh密码。其中ip字段是必须的,其他三个字段是选填的。 下面的配置都是合法的。
ip|port|user|password
ip|port|user|
ip|port|user
ip|port|
ip|port
ip|
ip
附gossh详细说明:
gossh介绍:
#单机模式
1.远程运行命令
gossh [-t cmd] -h hostname -P port(default 22) -u username(default root) -p passswrod [-f] "command"
gossh -h 192.168.15.6 -t cmd -u root -p 123456 -P 22 "uname"
gossh -h 192.168.15.6 -t cmd -u root -p 123456 -P 22 "cd /tmp/test&&touch test.sh"
使用-f强制执行命令,一些危险命令拒绝执行,使用-f强制执行
gossh -h 192.168.56.2 -f "cd /tmp && rm ip.txt"
2.推送文件到远程主机
支持推送文件或者文件夹到远程主机,如果远程主机已经存在文件,默认是拒绝执行,可以使用-f参数强制覆盖
gossh -t push -h hostname -P port(default 22) -u username(default root) -p passswrod [-f] localfile/localpath remotepath
gossh -h 192.168.15.6 -t push -u root -p 123456 -P 22 ip.txt /tmp/test
gossh -h 192.168.15.6 -t push -u root -p 123456 -P 22 log /tmp/test
3.从远程主机拉取文件
gossh -t pull -h hostname -P port(default 22) -u username(default root) -p passswrod remote_file local_path
注意:如果local_path不存在,会自动创建。
gossh -h 192.168.15.6 -t pull -u root -p 123456 -P 22 /tmp/test/ip.txt .
#批量模式
批量模式和单机模式的区别:
使用-i参数代替-h指定批量运行的ip文件。
可以是用-c参数指定并发度。
如果密码加密了,需要带上-e参数告诉gossh密码已经加密。
批量拉取文件到本地时,由于是文件都一样,文件会放到local_path/ip下,
单机模式时直接放在local_path指定本地目录,但是批量模式,放到local_path下每个主机ip子目录下。
1.批量远程运行命令
gossh -t cmd -i ip.txt "command"
2.推送文件到批量远程主机
gossh -t push -f -i ip.txt test.txt /tmp/test
3.批量从远程主机拉取文件到本地
gossh -t pull -f -i ip.txt /tmp/testtest.txt /tmp
#使用说明
gossh可以完成简单的命令执行,文件传递等工作,也可以完成复查的工作。
完成复杂工作需要在本地编写脚本,推送脚本文件,然后远程执行脚本,再将脚本执行结果文件拉取到本地分析处理。
#参考链接
https://github.com/andesli/gossh
gossh程序包:可以找作者获取。批量操作也可以通过公司金证自动化做成可视化流程,还可以通过ansible工具。