【发布时间】:2013-07-29 04:51:36
【问题描述】:
我正在编写一个 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 实例,它提供了一个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(它能够在服务器上运行命令,例如 cd 和 supervisor 和 git status),只是 git pull 失败。
【问题讨论】:
-
您在哪个用户下运行任务(因此 - git 在 fabric 下)? git 操作的“权限被拒绝...”是身份验证失败的症状
-
我对两者都使用相同的用户。我在fabric中的主机是
[John@server],当我ssh时,它也是John@server。