[英]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的任何提示?
首先,自動化su
或sudo
不是正確的解決方案。
正確的解決方案是設置專用私鑰,僅具有任務所需的權限。
invoke_subsystem
和exec_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.