通过 ssh 私有仓库,apt-get 忽略软件包

通过 ssh 私有仓库,apt-get 忽略软件包

我想在我的 VPS 上创建一个新的私有 APT 存储库。为了确保其安全,我决定通过 ssh 连接并通过私钥/公钥进行身份验证。

因此我在 VPS 上创建了一个新帐户:回购-usr

useradd -m -d /home/repo-usr -s /bin/false repo-usr

之后,我以 root 身份通过 gpg 生成密钥

sudo su
gpg --key-gen

所以我检索了一个 keyid,假设1234

然后我 cd 进入回购-usr并在那里创建一个存储库

cd /home/repo-usr
mkdir -p ubuntu/conf

并在conf里面创建两个文件。

分布

Codename: xenial
Architectures: amd64
Components: main
SignWith: 1234 

选项

ask-passphrase

我通过以下方式将一些包添加到 repo:

reprepro -b /home/repo-usr/ubuntu includedeb xenial main foo.deb

在我的客户端计算机上我生成了 ssh 密钥对回购-usr并将公钥放入服务器端的授权密钥中(在 /home/repo-usr/.ssh/authorized_keys 中)。生成的私钥我将传输给客户端的 root。我相信我已经成功通过了身份验证,但我不确定。

在 /etc/apt/sources.list 中我添加:

deb ssh://[email protected]:/home/repo-usr/ubuntu xenial main

清理 apt 缓存并运行 apt-get update 后,我发现 apt 只是忽略了这些包。

Ign:19 ssh://server.com/home/repo-usr/ubuntu xenial/main amd64 Packages
Ign:20 ssh://server.com/home/repo-usr/ubuntu xenial/main i386 Packages    

等等...除此之外,我还得到了

无法获取 ssh://server.com/home/repo-usr/ubuntu/dists/xenial/main/binary-amd64/Package 读取错误 - 读取(0:成功)

但是包文件存在那里并且看起来不错。

有人知道我做错了什么吗? 对于这种情况,上述设置是否正确?

答案1

回购-usr必须配备外壳。

usermod -s /bin/bash repo-usr

解决了这个问题。

相关内容