通过Fabric使用密钥对(.pem文件)连接EC2
有没有人能分享一个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