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中如何修改属于root的文件

怎么在ubuntu下不通过sudo使用root权限

系统之家Ubuntu sudo报错command not found怎么办?怎么办

centos上如何安装gcc,和ubuntu不一样吗?ubuntu中sudo apt-get install gcc,centos中不能使用吗?

如何在 Ubuntu 14.04 中使用 systemctl

ubuntu 怎么给应用程序ROOT权限。