gpt4 book ai didi

python - 如何使用 sudo 启动 Python Paramiko SFTP?

转载 作者:行者123 更新时间:2023-11-28 19:14:40 24 4
gpt4 key购买 nike

使用标准的client.open_sftp() 句柄给我SFTP 控制但没有sudo/root 权限,任何类型的/etc/** 文件都不能编辑。我有一个拥有无密码 sudo 访问权限的用户,我想我可以从 sudo su 开始,然后调用 SFTP,但情况似乎并非如此。

t = paramiko.Transport(('192.168.56.102', 22))  
t.connect(username='vagrant', password='vagrant')
chan = t.open_session()
chan.get_pty()
chan.invoke_subsystem('sftp')
chan.exec_command('sudo su')
sftp = paramiko.SFTPClient.from_transport(t)

..错误

paramiko.ssh_exception.SSHException: Channel closed.
DEBUG:paramiko.transport:EOF in transport thread

关于如何让 Paramiko 使用 sudo 访问打开 SFTP 的任何提示?

最佳答案

首先,自动化 susudo 不是正确的解决方案。

正确的解决方案是设置一个专用的私钥,只有您的任务所需的权限。


invoke_subsystemexec_command 通常是互斥的。您可以使用其中之一,但不能同时使用两者。 “子系统”是“命令”的别名。 IE。 "sftp" 子系统通常是 "/bin/sftp-server" 命令的别名(认为这是一个非常简化的解释)。


不支持以不同用户身份执行 SFTP 子系统。

所以你所能做的就是以不同的用户身份直接执行 sftp_server 二进制文件。

chan.exec_command('sudo su -c /bin/sftp-server')

(假设 *nix OpenSSH 服务器)

而且您绝对不能请求 PTY (get_pty),因为它与 SFTP 协议(protocol)不兼容。

关于python - 如何使用 sudo 启动 Python Paramiko SFTP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35190595/

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