我想在我的VPS上创build一个新的私人APT存储库。 为了保护它,我决定通过SSH连接并通过私钥/公钥进行身份validation。
所以在VPS上我创build了一个新账户: repo-usr
useradd -m -d /home/repo-usr -s /bin/false repo-usr
之后,作为根我通过gpg作为根生成密钥
sudo su gpg --key-gen
所以我找回了一个keyid,比如说1234
然后我进入repo-usr的家,在那里创build一个仓库
cd /home/repo-usr mkdir -p ubuntu/conf
并在conf中创build两个文件。
分布
Codename: xenial Architectures: amd64 Components: main SignWith: 1234
选项
ask-passphrase
我通过添加一些包回购:
reprepro -b /home/repo-usr/ubuntu includedeb xenial main foo.deb
在我的客户端计算机上,我为repo-usr生成ssh密钥对,并将公钥放在服务器端的授权密钥中(位于/home/repo-usr/.ssh/authorized_keys)。生成的私钥我转移到客户端的根目录。 我相信我已经成功validation,但是我不确定。
在/etc/apt/sources.list中添加:
deb ssh://[email protected]:/home/repo-usr/ubuntu xenial main
清理apt cache并运行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:成功)
然而,Package文件存在,看起来不错。
有没有人有任何想法我做错了什么? 上面提到的设置是否适合这种情况?
repo-usr必须提供一个shell。
usermod -s /bin/bash repo-usr
解决了这个问题。