在Fabric中使用SSH密钥文件
你怎么设置fabric,让它通过SSH密钥文件连接到远程主机(比如,亚马逊的EC2实例)呢?
8 个回答
67
Fabric 1.4 版本新增了一个很酷的功能 - 现在 Fabric 支持 SSH 配置。
如果你已经把所有的 SSH 连接参数放在了你的 ~/.ssh/config
文件里,Fabric 会自动支持这些设置,你只需要在你的 fabfile 开头添加:
env.use_ssh_config = True
就可以了。
154
找一个简单的fabfile示例,能展示如何使用SSH密钥文件,真的是不太容易。我写了一篇博客文章来讲这个问题(还有一个相关的gist)。
基本上,使用的步骤大概是这样的:
from fabric.api import *
env.hosts = ['host.name.com']
env.user = 'user'
env.key_filename = '/path/to/keyfile.pem'
def local_uname():
local('uname -a')
def remote_uname():
run('uname -a')
这里面最重要的是要设置env.key_filename
这个环境变量,这样Paramiko在连接的时候才能找到它。
71
这里还值得一提的是,你可以使用命令行参数来实现这个功能:
fab command -i /path/to/key.pem [-H [user@]host[:port]]