Capistrano和Corkscrew PATH错误

时间:2015-06-17 12:02:20

标签: ruby-on-rails git ssh capistrano gitlab

我正在尝试使用Capistrano部署我的Rails应用程序但是当涉及到“git ls-remote”时,我收到以下错误:

$ /usr/bin/env git ls-remote --heads git@git.<server>:<project>.git
/bin/bash: line 0: exec: corkscrew: not found
DEBUG [a5205e2a]    ssh_exchange_identification: Connection closed by remote host
DEBUG [a5205e2a]    fatal: The remote end hung up unexpectedly

如果我尝试在服务器上运行该命令没有问题。我还在gitlab中为“deployer”用户提供了一个部署ssh密钥。

Corkscrew位于〜/ bin / corkscrew下,并被添加到PATH变量中。

$ echo $PATH
/home/deployer/.rbenv/shims:/home/deployer/.rbenv/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/deployer/bin

$ corkscrew
corkscrew 2.0 (agroman@agroman.net)

usage: corkscrew <proxyhost> <proxyport> <desthost> <destport> [authfile]

$ which corkscrew
~/bin/corkscrew

更新

这是我的〜/ .ssh / config:

Host *
  ProxyCommand corkscrew <server> 8088 %h %p ~/.ssh/proxyauth

〜/ .ssh / proxyauth文件包含代理用户的凭据。

如果您需要其他信息,请告诉我们。

1 个答案:

答案 0 :(得分:2)

问题似乎是ssh无法找到corkscrew可执行文件。我仔细检查了我的本地~/.ssh/config文件,并使用了corkscrew可执行文件的完整路径:

Host *
  ProxyCommand /usr/local/bin/corkscrew <server> 8088 %h %p ~/.ssh/proxyauth

(因为我在OS X上并通过Homebrew安装了corkscrew,所以它位于/usr/local/bin。)

您是否可以尝试更新~/.ssh/config以包含corkscrew可执行文件的完整路径?这样的事情(我不知道~是否有效,如果没有,你可能必须使用完整路径):

Host *
  ProxyCommand ~/bin/corkscrew <server> 8088 %h %p ~/.ssh/proxyauth