Ubuntu
通過 ssh 的私有倉庫,apt-get 忽略包
我想在我的 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
解決了這個問題。