How use Connection in Fabric 2?
Asked Answered
W

2

6

I'm trying to connect to host and run command with module Fabric 2 and have this error:

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

Simple code from docs (http://docs.fabfile.org/en/latest/getting-started.html):

from fabric import Connection

res = Connection('<host-ip>')
res.run('uname -s')

Accoding to docs, I don't need in special configs, but it's doesn't work...

fabric 2.1.3
python 2.7.14

Winona answered 5/6, 2018 at 23:8 Comment(2)
Possible duplicate of SSH - Python with paramiko issueWelterweight
or using-an-ssh-keyfile-with-fabricWelterweight
S
11

Following works for me.

connect_kwargs = {"key_filename":['PATH/KEY.pem']}
with Connection(host="EC2", user="ubuntu", connect_kwargs=connect_kwargs) as c:
    c.run("mkdir abds")
Selfimmolating answered 19/7, 2018 at 7:12 Comment(0)
P
4

I run into the same issue. Rather than passing a SSH keyfile, as suggested previously, another trivial way to sort it out might be to pass a password (that would be fine just over the test/development stage).

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')
Peridium answered 24/12, 2018 at 16:43 Comment(1)
bad idea, your server will easily be taken over by bots by brute forceSuccor

© 2022 - 2024 — McMap. All rights reserved.