使用Fabric在git存储库上拒绝权限

时间:2013-07-29 04:51:36

标签: python git fabric

我正在编写一个fab脚本来在远程服务器上执行git pull,但是当fabric运行命令时,我得到Permission denied (publickey,keyboard-interactive).

如果我ssh到服务器,然后执行拉取,它的工作原理。 (我已经在服务器上设置了密钥,所以它不会要求密码等。)

这是我的面料任务:

import fabric.api as fab
def update():
  '''
  update workers code
  '''
  with fab.cd('~/myrepo'):
      # pull changes
      print colors.cyan('Pulling changes...')
      fab.run('git pull origin master')

如何让它与Fabric一起使用?

编辑:我的服务器是Google Compute个实例,它为ssh提供了一个gcutil工具。这是它运行以连接到服务器的命令:

ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/John/.ssh/google_compute_engine -A -p 22 John@123.456.789.101 

该脚本能够连接到服务器AFAICT(它能够在服务器上运行命令,如cdsupervisorgit status),它只是git pull失败。

1 个答案:

答案 0 :(得分:8)

您需要像这样编辑fabfile才能启用ssh代理转发选项。

from fabric.api import *

env.hosts = ['123.456.789.101']
env.user = 'John'
env.key_filename = '/Users/John/.ssh/google_compute_engine'
env.forward_agent = True

def update():
  '''
  update workers code
  '''
  with cd('~/myrepo'):
      # pull changes
      print colors.cyan('Pulling changes...')
      run('git pull origin master')