ubuntu:如何使用 sudo 使用 composer 安装私有存储库
Posted
技术标签:
【中文标题】ubuntu:如何使用 sudo 使用 composer 安装私有存储库【英文标题】:ubuntu: how to install private repository with composer using sudo 【发布时间】:2016-12-09 06:11:27 【问题描述】:我们的 symfony 项目除了公共资源之外还使用我们自己的 gitlab 服务器上的一个私有存储库,可以通过 ssh 访问。
如果我只将这个私有存储库克隆到我的本地 ubuntu 机器上,一切都很好。 如果我使用
$ sudo composer install
在包含此存储库的项目中,我收到以下错误消息:
[RuntimeException]
Failed to execute git clone --mirror 'git@gitlab.con.example.com:myprivaterepo.git' '/home/aliebermann/.composer/cache/vcs/git-gitlab.con.example.com-myprivaterepo.git/'
Cloning into bare repository '/home/myuser/.composer/cache/vcs/git-gitlab.con.example.com-myprivaterepo.git'...
__________________________________________________________________
| |
| This system is for the use of authorized users only. Usage of |
| this system may be monitored and recorded by system personnel. |
| |
| Anyone using this system expressly consents to such monitoring |
| and is advised that if such monitoring reveals possible |
| evidence of criminal activity, system personnel may provide the |
| evidence from such monitoring to law enforcement officials. |
|__________________________________________________________________|
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我认为这是因为我的 ssh 密钥位于我的私人住宅中,如果我将其作为 sudo 运行,它们不会被调用。 由于您不能像在其他 Linux 系统上那样简单地使用“su”,我不知道如何解决这个问题。
让 composer 在没有 sudo 的情况下运行是行不通的。
接下来我将所有 ssh 密钥复制到 /root/.ssh ,但由于它们受密码保护,我遇到了下一个问题:
$ sudo ssh-add -k
[sudo] Password for myuser:
Could not open a connection to your authentication agent.
【问题讨论】:
我现在以没有 root 的 myuser 身份运行整个事情。这解决了我的问题,但不是问题。 【参考方案1】:为root
创建一个 ssh 密钥并为其授权访问。
您实际上并不需要 su
来执行此操作。但如果你真的很想,你可以变成root
:
sudo su -
更新
所以我看到您将用户的密钥复制到了root
。到目前为止一切顺利。
$ sudo ssh-add -k [sudo] Password for myuser: Could not open a connection to your authentication agent.
似乎没有为root
运行身份验证代理。
你需要先开始一个。
这是一种方法:
# become root; will ask for user's password
sudo su -
# start ssh-agent
eval $(ssh-agent)
# add private key to agent; will ask for passphrase
ssh-add
在此之后,您可以使用root
执行composer install
。
【讨论】:
您是否为root
启动了身份验证代理?您是否为root
创建了密钥?似乎没有。最好将sudo su -
变成root
,然后按照通常的程序创建和授权密钥。
让我们continue this discussion in chat。
我根据您的 cmets 中的新信息修改了我的答案并更新了您的问题。如果您还有其他问题,在聊天中解决其余问题会更容易,请单击我之前评论中的链接。【参考方案2】:
你也可以加
Defaults env_keep+=SSH_AUTH_SOCK
到服务器的 sudoers 文件,并在连接到服务器时将 -A 添加到您的 ssh 命令行。假设您在与存储库关联的本地计算机上的 ssh 代理中拥有正确的密钥,
sudo composer install
应该可以工作。
【讨论】:
以上是关于ubuntu:如何使用 sudo 使用 composer 安装私有存储库的主要内容,如果未能解决你的问题,请参考以下文章
系统之家Ubuntu sudo报错command not found怎么办?怎么办
centos上如何安装gcc,和ubuntu不一样吗?ubuntu中sudo apt-get install gcc,centos中不能使用吗?