Paramiko 工作但 Fabric 失败(要求输入密码)
Paramiko works but Fabric fails (asking for password)
我四处搜索,我真的无法得到答案,但出于某种原因,fabric 一直要求输入密码,但 paramkio 没有
import paramiko
mykey = paramiko.RSAKey.from_private_key_file('/path/to/key')
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('<ip>', username='me', pkey=mykey)
(stdin, stdout, stderr) = client.exec_command('ls /home') #works
for line in stdout.readlines():
print line
client.close()
但布料不会
from fabric.api import sudo
env.user = 'me'
env.hosts = 'ip'
env.key_filename = '/path/to/key'
def run():
sudo('ls') #asks for password
此外,直接 ssh
为该用户工作。 scp
也是如此。所以这不可能是 public 密钥或 ssh 代理问题。
有人知道 Fabric 是怎么回事吗?
问题出在这一行:
sudo('ls') #asks for password
Fabric 要求您输入密码以使用 sudo 在远程主机上执行命令,
所以尝试将 sudo() 更改为 运行().
如果您仍然想使用 sudo 但没有密码,那么我建议搜索设置无密码 sudo,但仍然只针对特定命令。
我四处搜索,我真的无法得到答案,但出于某种原因,fabric 一直要求输入密码,但 paramkio 没有
import paramiko
mykey = paramiko.RSAKey.from_private_key_file('/path/to/key')
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('<ip>', username='me', pkey=mykey)
(stdin, stdout, stderr) = client.exec_command('ls /home') #works
for line in stdout.readlines():
print line
client.close()
但布料不会
from fabric.api import sudo
env.user = 'me'
env.hosts = 'ip'
env.key_filename = '/path/to/key'
def run():
sudo('ls') #asks for password
此外,直接 ssh
为该用户工作。 scp
也是如此。所以这不可能是 public 密钥或 ssh 代理问题。
有人知道 Fabric 是怎么回事吗?
问题出在这一行:
sudo('ls') #asks for password
Fabric 要求您输入密码以使用 sudo 在远程主机上执行命令, 所以尝试将 sudo() 更改为 运行().
如果您仍然想使用 sudo 但没有密码,那么我建议搜索设置无密码 sudo,但仍然只针对特定命令。