通过Fabric使用密钥对(.pem文件)连接EC2

28 投票
3 回答
21997 浏览
提问于 2025-04-16 12:14

有没有人能分享一个Fabric的示例,教我怎么用pem文件连接到EC2?

我试着这样写过: Python Fabric运行命令时返回“binascii.Error: Incorrect padding”

但是在我执行run()这个函数的时候,遇到了一些编码问题。

3 个回答

11

你还可以做的另一件事是,在环境变量中设置 key_filename。具体可以参考这个链接: https://stackoverflow.com/a/5327496/1729558

35

在不解决你的编码问题的情况下,你可以把你的EC2相关设置放到一个ssh配置文件里:

  • ~/.ssh/config

或者,如果你想让所有用户都能用的话,可以放在:

  • /etc/ssh_config

在这个文件里,你可以指定主机、IP地址、用户名、身份文件等等,这样就变得很简单了:

ssh myhost

举个例子:

Host myhost
  User ubuntu
  HostName 174.129.254.215
  IdentityFile ~/.ssh/mykey.pem

想了解更多细节,可以查看 man ssh_config

42

要使用pem文件,我通常会把这个pem文件添加到ssh代理里,然后只需要提到用户名和主机:

ssh-add ~/.ssh/ec2key.pem
fab -H ubuntu@ec2-host deploy

或者像你提到的例子那样,指定环境信息(不需要密钥):

env.user = 'ubuntu'
env.hosts = [
    'ec2-host'
]

然后像平常一样运行:

fab deploy

撰写回答