簡體   English   中英

你如何用sudo啟動Python Paramiko SFTP?

[英]How do you start Python Paramiko SFTP with sudo?

使用標准的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:頻道已關閉。
DEBUG:paramiko.transport:傳輸線程中的EOF

有關如何讓Paramiko通過sudo訪問打開SFTP的任何提示?

首先,自動化susudo不是正確的解決方案。

正確的解決方案是設置專用私鑰,僅具有任務所需的權限。


invoke_subsystemexec_command通常是互斥的。 您可以使用其中一個,但不能同時使用兩個。 “子系統”是“命令”的別名。 "sftp"子系統通常是"/bin/sftp-server"命令的別名(認為這是一個非常簡化的解釋)。


作為不同的用戶,執行SFTP子系統沒有本機支持。

因此,您所能做的就是直接以不同的用戶身份執行sftp_server二進制文件。

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

(假設* nix OpenSSH服務器)

並且您絕對不能請求PTY( get_pty ),因為它與SFTP協議不兼容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM