我想在我的 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
解决了这个问题。