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

Mic*_*ong 26 python fabric

任何人都有任何Fabric配方,显示如何使用pem文件连接到EC2?

我尝试用这种方式编写它: Python Fabric run命令返回"binascii.Error:不正确的填充"

但是当我执行该run()函数时,我遇到了一些编码问题.

gak*_*gak 42

要使用pem文件,我通常将pem添加到ssh代理,然后只需引用用户名和主机:

ssh-add ~/.ssh/ec2key.pem
fab -H ubuntu@ec2-host deploy
Run Code Online (Sandbox Code Playgroud)

或指定env信息(没有密钥),例如您链接到的示例:

env.user = 'ubuntu'
env.hosts = [
    'ec2-host'
]
Run Code Online (Sandbox Code Playgroud)

并正常运行:

fab deploy
Run Code Online (Sandbox Code Playgroud)


Jef*_*uer 32

如果不解决编码问题,可以将EC2内容放入ssh配置文件中:

  • 的〜/ .ssh /配置

或者,如果全球:

  • 在/ etc/ssh_config中

在那里你可以指定你的主机,IP地址,用户,识别文件等,所以这是一个简单的问题:

ssh myhost
Run Code Online (Sandbox Code Playgroud)

例:

Host myhost
  User ubuntu
  HostName 174.129.254.215
  IdentityFile ~/.ssh/mykey.pem
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息:man ssh_config

  • 你摇滚!这为我节省了大量时间。不过,我真的应该花时间学习一些服务器管理员。 (2认同)

小智 10

您可以做的另一件事是在env变量中设置key_filename:https: //stackoverflow.com/a/5327496/1729558

  • 在我看来,这是正确的答案。更明确地说:`env.key_filename = '/path/to/keyfile.pem'`。 (2认同)