Ubuntu

通過 ssh 的私有倉庫,apt-get 忽略包

  • December 17, 2016

我想在我的 VPS 上創建一個新的私有 APT 儲存庫。為了保護它,我決定通過 ssh 連接並通過私鑰/公鑰進行身份驗證。

所以在 VPS 上我創建了一個新帳戶:repo-usr

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

之後,我以 root 身份通過 gpg 作為 root 生成了密鑰

sudo su
gpg --key-gen

所以我檢索了一個keyid,比如說1234

然後我 cd 進入repo-usr的首頁並在那裡創建一個儲存庫

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

並在 conf.d 中創建兩個文件。

分佈

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

選項

ask-passphrase

我通過以下方式向 repo 添加了一些包:

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

在我的客戶端電腦上,我為repo-usr生成 ssh 密鑰對,並將公鑰放入伺服器端的授權密鑰中(在 /home/repo-usr/.ssh/authorized_keys 中)。生成的私鑰在客戶端傳輸給 root。我相信我已經成功驗證,但我不確定。

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

deb ssh://repo-usr@sever.com:/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:成功)

但是封包件存在那裡並且看起來不錯。

有誰知道我做錯了什麼?對於這種情況,上述設置是否正確?

必須為repo-usr提供一個 shell。

usermod -s /bin/bash repo-usr

解決了這個問題。

引用自:https://serverfault.com/questions/821136