我正在寻找一种方法来限制对私有 Debian 存储库的访问并能够以非交互方式对其进行身份验证(即使用脚本)
我发现的最有用的文章实际上来自Debian 管理站点,但安全方法使用 ssh 和公钥/私钥。它工作得很好,但每个主机的公钥都需要在远程 authorized_keys 文件中才能成功进行身份验证。它并没有说明向 ssh:// 提供密码,但我认为它应该是可能的。
您是否尝试过其他替代方案(例如 ftps)?
提前致谢
我正在寻找一种方法来限制对私有 Debian 存储库的访问并能够以非交互方式对其进行身份验证(即使用脚本)
我发现的最有用的文章实际上来自Debian 管理站点,但安全方法使用 ssh 和公钥/私钥。它工作得很好,但每个主机的公钥都需要在远程 authorized_keys 文件中才能成功进行身份验证。它并没有说明向 ssh:// 提供密码,但我认为它应该是可能的。
您是否尝试过其他替代方案(例如 ftps)?
提前致谢
如果您总是手动在服务器上运行( crons
apt-get
不会启动自动命令),那么您可能会考虑使用ssh agent forwarding。这避免了必须为您管理的每台服务器管理一个公钥/私钥对,并且可能比将私钥留在每台服务器上更安全。apt-get
初始配置 - 连接到您要管理的服务器,并添加类似这样的
/etc/apt/sources.list
内容(此示例假设您希望您的服务器连接到manager
帐户):在您自己的计算机上创建一对私钥/公钥,
johndoe
例如使用您的登录名(假设您的计算机在 debian 上运行:如果没有,您可以从专用于管理的 debian 服务器执行此操作):将您的公钥复制到存储库服务器
/home/manager/.ssh/authorized_keys
:每个管理会话一次
通过键入以下内容在您的计算机上启动 ssh 代理:
将您的密钥添加到代理(这将需要您的密码):
管理服务器
ssh -A
使用(-A
激活代理转发)连接到您要管理的服务器:切换到root(如果你想使用
sudo
你需要配置/etc/sudoers
,否则sudo
会破坏代理转发,阅读这个):由于代理转发,您现在应该能够使用 ssh 连接到存储库的管理员帐户而无需再次输入密码。因此,
apt-get
应该可以正常工作:结束您的管理会话
完成服务器管理后,从代理中删除密钥:
优点
ssh-ask
来接受/拒绝每次尝试使用您的密钥。一种方法是只允许一组特定的 IP 访问存储库。这对 LAN 和 VPN 非常有效。
简单高效。
ssh + 公钥/私钥解决方案还不错:
ssh-keygen
,然后ssh-copy-id [email protected]
编辑
/etc/apt/sources.list
并添加如下内容:当然,它要求您将每个服务器的公钥放入服务器上的
~/.ssh/authorized_keys
文件中,但这并不复杂(见上文),它使您可以控制在任何给定时间允许或不允许哪些服务器(您可以在任何时间authorized_keys
)。您可以设置对存储库的 https 访问,由登录名/密码(基本身份验证)保护。问题是您需要输入明文登录名/密码
/etc/apt/sources.list
(注意:有一个补丁允许输入登录名/密码/root/.netrc
)。您问题中的链接显示了多种方法。您想要数字 2,https + 基本身份验证。