Capistrano 和 Corkscrew 路径错误

Capistrano and Corkscrew PATH error

我正在尝试使用 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 文件包含代理用户的凭据。

如果您需要更多信息,请告诉我。

问题似乎是 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