我有一台开发人员的机器,并且我设置了SSH密钥以允许他们访问服务器。 .ssh中的公钥和私钥显然对此人可见。保护SSH密钥
有没有办法保护这些钥匙?如果我不希望将这些密钥复制到另一台服务器的可能性,我可以做任何事吗?
默认情况下,ssh-agent以登录用户身份运行,所以我可能无法拿走用户对〜/ .ssh文件夹的访问权限。
感谢, Tabrez
我有一台开发人员的机器,并且我设置了SSH密钥以允许他们访问服务器。 .ssh中的公钥和私钥显然对此人可见。保护SSH密钥
有没有办法保护这些钥匙?如果我不希望将这些密钥复制到另一台服务器的可能性,我可以做任何事吗?
默认情况下,ssh-agent以登录用户身份运行,所以我可能无法拿走用户对〜/ .ssh文件夹的访问权限。
感谢, Tabrez
你希望允许开发者使用的关键,但不能复制它。
为此,您可以将密钥存储在开发人员无法完全访问的服务器上。一种实现方式如下:
开发人员现在可以通过使用密钥托管服务器上运行的代理登录到从第二个服务器上的其他地方,但他们从来没有获得任何壳或机会检查/复制的关键文件托管服务器。
此解决方案的缺点是,所有开发人员的会话均通过密钥管理服务器以及第二台共享服务器进行传输。如果密钥管理服务器是远程的,这可能是不利的。开发人员使用它将文件(SCP或SFTP)传输回本地计算机也很困难且不直观。
另一种解决方案将涉及编写软件开发者的机器转发SSH代理请求通过专用连接到一个真正的代理键托管服务器上本地创建一个存根SSH代理服务器功能。随着一点点的工作,你可以设置为关键托管服务器(本身SSH连接,我推荐)的专用连接自动启动开发人员的机器上一个简单的子shell有存根SSH代理的插座在它的环境,使他们能够“只使用它“,并且这个解决方案可以非常实用和用户友好。我自己做了这个,但它超出了Stackoverflow答案的范围。
不,如果您将密钥存储在文件中,则无关紧要。如果密钥存储在硬件(智能卡)中,有方法可以防止复制。 – Zoredache 2012-02-15 01:20:48
SSH并不意味着限制基于机器的访问 – madth3 2012-02-15 01:39:23
我认为你可以检查'man sshd_config'并配置'HostCertificate'和/或'Match'来限制用户到特定的外出主机。 – nicerobot 2012-02-15 03:22:34