我尝试使用模块Fabric 2连接到主机并运行命令并出现此错误:
Traceback (most recent call last):
File "Utilities/fabfile.py", line 4, in <module>
res.run('uname -s')
File "<decorator-gen-3>", line 2, in run
File "/usr/local/lib/python2.7/dist-packages/fabric/connection.py", line 29, in opens
self.open()
File "/usr/local/lib/python2.7/dist-packages/fabric/connection.py", line 501, in open
self.client.connect(**kwargs)
File "/home/trishnevskaya/.local/lib/python2.7/site-packages/paramiko/client.py", line 424, in connect
passphrase,
File "/home/username/.local/lib/python2.7/site-packages/paramiko/client.py", line 715, in _auth
raise SSHException('No authentication methods available')
paramiko.ssh_exception.SSHException: No authentication methods available
来自文档(http://docs.fabfile.org/en/latest/getting-started.html)的简单代码:
from fabric import Connection
res = Connection('<host-ip>')
res.run('uname -s')
根据文档,我不需要特殊配置,但它不起作用......
面料2.1.3
python 2.7.14
答案 0 :(得分:3)
以下对我有用。
connect_kwargs = {"key_filename":['PATH/KEY.pem']}
with Connection(host="EC2", user="ubuntu", connect_kwargs=connect_kwargs) as c:
c.run("mkdir abds")
答案 1 :(得分:0)
我遇到了同样的问题。与其像以前建议的那样传递SSH密钥文件,不如通过另一种简单的方法进行分类,可能是传递密码(在测试/开发阶段就可以了)。
import getpass
from fabric import Connection, Config
sudo_pass = getpass.getpass("What's your user password?\n")
config = Config(overrides={'user': '<host-user>', 'connect_kwargs': {'password': sudo_pass}})
c = Connection('<host-ip>', config=config)
c.run('uname -s')