3

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

如果我 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 一起使用?

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

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(它能够在服务器上运行命令,例如cdandsupervisorgit status),只是git pull失败了。

4

1 回答 1

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')
于 2013-07-29T12:44:06.850 回答