我正在尝试使用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文件包含代理用户的凭据。
如果您需要其他信息,请告诉我们。
答案 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