使用SSH密钥的Fabric连接ec2实例

时间:2018-09-22 15:06:53

标签: python ssh fabric ssh-keys

我正在学习自动连接已创建的ec2实例的结构。我在ssh文件夹中设置了ssh_config

Home myhostname
        Hostname 52.62.207.113
        User ubuntu
        UserKnownHostsFile /dev/null
        StrictHostKeyChecking no
        PasswordAuthentication no
        IdentityFile ~/.ssh/mykey-pem

然后我写了一个python文件进行测试

from fabric import Connection
c = Connection('52.62.207.113')
result = c.run('uname -s')

终端响应

paramiko.ssh_exception.SSHException: No authentication methods available. 

我不确定会发生什么。我尝试手动

ssh -i mykey.pem ubuntu@52.62.207.113

它已成功连接EC2实例

2 个答案:

答案 0 :(得分:0)

ssh_config

我不是Fabric用户,但是我想您希望Fabric使用此处Home myhostname文件中的条目吗?我可以看到两个可能的问题:

  1. 您有Host。此处正确的关键字是Home,而不是Host myhostname Hostname 52.62.207.113

    myhostname
  2. 如果希望结构将主机部分用于myhostname,则可能必须告诉它连接到c = Connection('myhostname')

    Host

    您要告诉它连接到IP地址,并且可能不会将其与主机部分相关

您收到的实际错误“没有可用的身份验证方法”,可能是因为结构未应用ssh_config中的{{1}}部分,并且它不知道任何密钥该会话应使用的文件。

答案 1 :(得分:-1)

我认为您错过了PreferredAuthentications个选项。
您输入的密钥文件名不正确。

如下所示更改配置文件,然后尝试重新连接。

Home myhostname
    Hostname 52.62.207.113
    User ubuntu
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/mykey.pem