使用Fabric使用git pull的SSH密钥密码短语
我正在尝试使用fabric自动化应用程序的部署 应用程序代码托管在GitHub上,推出新版本非常简单——只需执行“git pull”即可。该应用程序托管在100台服务器上,因此我希望自动化部署。Fabfile.py:使用Fabric使用git pull的SSH密钥密码短语,git,fabric,ssh-keys,passphrase,Git,Fabric,Ssh Keys,Passphrase,我正在尝试使用fabric自动化应用程序的部署 应用程序代码托管在GitHub上,推出新版本非常简单——只需执行“git pull”即可。该应用程序托管在100台服务器上,因此我希望自动化部署。Fabfile.py: def deploy(): code_path = '/home/myuser/myapp' with cd(code_path): run('git pull') run('git submodule update --init --recursive')
def deploy():
code_path = '/home/myuser/myapp'
with cd(code_path):
run('git pull')
run('git submodule update --init --recursive')
问题是,在每个git命令上,我都会得到一个提示:输入密钥'/home/myuser/.ssh/id\u rsa
:
有没有办法自动输入密码短语?它在每台服务器上都是相同的,与sudo密码相同
我已经试过了,但我想知道是否有更好的(即标准的)方法。制作钥匙时不要使用密码短语。只需按enter键,然后再次按确认。您还可以有多个键。有些有密码,有些没有。您还可以使用ssh密钥代理和代理转发。始终在密钥上输入密码。Github在如何利用这一点上有很好的文档
结构现在还应该具有代理转发功能。在一些角落的情况下,我遇到了麻烦,但在一个明确的地方(“SSH - A.……”)周围绕过它们,直到解决问题。 < P>尽管我认为在接受的回答中描述的SSH-AGET转发是一个更好的解决方案(如果你成功了),但是还有其他选择,由结构本身提供:
结构有自己的密码设置选项(即
环境密码
条目)。如果设置env.password
(),则可以使结构自动输入密码短语(和sudo passwod):
密码
默认值:None
连接到远程服务器时SSH层使用的默认密码
主机,和/或在回答sudo提示时
您可以使用以下选项之一设置密码:
- 直接在“fabfile.py”内的代码中使用
env.password='password'
- 在命令行中作为
命令的选项,使用fab
或-p PASSWORD
()李>-PASSWORD=PASSWORD
- 作为另一个选项,您可以将
行放入passwod=PASSWORD
()中,该行在每个~/.fabrirc
命令之前加载,如果使用此选项,则不需要命令行选项或代码更改fab