gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:47 25 4
gpt4 key购买 nike

目前我正在编写一个 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')

Options -i 模拟器root登录(准备.profile等环境变量),option -H 设置$HOME目录与root相同。这些可能需要也可能不需要,具体取决于您的用例。

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

作为一项安全措施,您可以将 normal_user 设置为仅当用户使用正确的 SSH key 登录时才具有 sudo 权限。

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

关于python - 使用 Python 和 paramiko 以 root 身份执行远程命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com