我正在学习自动连接已创建的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实例
答案 0 :(得分:0)
ssh_config
我不是Fabric用户,但是我想您希望Fabric使用此处Home myhostname
文件中的条目吗?我可以看到两个可能的问题:
您有Host
。此处正确的关键字是Home
,而不是Host myhostname
Hostname 52.62.207.113
:
myhostname
如果希望结构将主机部分用于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