16

我正在尝试使用结构自动部署应用程序。

应用程序代码托管在 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')

问题是,在每个 git 命令上我都会收到一个提示Enter passphrase for key '/home/myuser/.ssh/id_rsa

有没有办法自动输入密码?在每台服务器上都相同,并且与 sudo 密码相同

我试过fexpect library,但我想知道是否有更好的(即标准)方法。

4

3 回答 3

13

You can also use a ssh key agent and use the agent forwarding. Always put a password on keys. Github has good docs on how to utilize this here.

Fabric should now also have agent forwarding ability. I've run into troubles with it in some corner cases, but gotten around them with an explicit local('ssh -A...) as a work around until the issue is resolved.

于 2012-09-13T23:52:05.060 回答
1

虽然我认为接受的答案中描述的 ssh-aget 转发是一个更可取的解决方案(如果你得到它的工作),但是 Fabric 本身提供了它的替代方案:
Fabric有它自己的“密码”设置选项(即env.password条目) . env.password如果您设置了(请参阅文档) ,则可以使织物自动输入密码(和 sudo 密码):

密码

默认:None

SSH 层在连接到远程主机和/或回答 sudo 提示时使用的默认密码。

 

您可以使用以下选项之一设置密码

  • env.password = 'PASSWORD'直接在“fabfile.py”中的代码中使用,
  • 在命令行中作为命令的选项fab,使用-p PASSWORD--password=PASSWORD文档)。
  • 作为另一个选项,您可以将passwod=PASSWORDline 放入~/.fabricrc文档)中,该文件在每个fab命令之前加载,如果使用此选项,则不需要命令行选项或代码更改。
于 2016-08-20T20:30:28.203 回答
-9

制作密钥时不要使用密码短语。只需按回车键,然后再次确认。您还可以拥有多个密钥。有些有密码,有些没有。

于 2012-09-13T14:48:58.357 回答