通过ssh进行私人回购,apt-get忽略包

我想在我的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 

解决了这个问题。