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