繁体   English   中英

使用Python和paramiko以root身份执行远程命令

[英]Execute remote commands as root using Python and paramiko

目前,我正在使用Python脚本运行嵌入式shell脚本,该操作系统包含rootnormal_user

问题是,当我尝试在一行中使用单个命令从normal_user切换到root时

我只需要修改代码,而无需像visudo那样修改它,并且只使用su而不给normal_user编码以外的任何权限。

我该如何实现?

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('172.16.x.x', username='my_name', password='my_password')

***stdin, stdout, stderr = ssh.exec_command('switch to root user && execute a commands as root')***


stdin.flush()
print stdout.readlines()
ssh.close()

假设操作系统环境已安装sudo命令,并且允许normal_user在没有密码的情况下sudo到root:

 stdin, stdout, stderr = ssh.exec_command('sudo -i -H -- echo $USER ; echo $USER')

选项-i模拟器用于root登录(准备.profile等环境变量),选项-H将$HOME目录设置为与根相同的目录。 根据您的用例,这些可能是必要的,也可能不是必需的。

echo $USER示例显示您以root用户身份执行该命令(它应返回$ USER = root)。

为了安全normal_user ,仅当用户使用正确的SSH密钥登录时,才可以将normal_user设置为具有sudo权限。

http://www.evans.io/posts/ssh-agent-for-sudo-authentication/ (复杂)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM