![使用不同的密钥处理一组服务器内的 SCP](https://linux22.com/image/756601/%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AF%86%E9%92%A5%E5%A4%84%E7%90%86%E4%B8%80%E7%BB%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%86%85%E7%9A%84%20SCP.png)
我正在使用 ubuntu 18.04 在 VPN 上与一组服务器合作,并且对于每个服务器我都有一个不同的密钥文件。但是,当我尝试安全地复制文件(例如在服务器之间安全地传播 munge 密钥)时,我被拒绝,因为我没有合适的密钥(至少我认为这是原因,它返回“权限被拒绝(公钥)”)。
在每个服务器上都保留我的私钥可能是一种不好的做法?将文件复制到本地计算机,然后将其复制到其他服务器是一件麻烦事,而且我也不确定这样做是否安全。
如何正确处理?我可以使用每台服务器上的用户(如 munge)在它们之间进行复制吗?如果不是复制到任何位置,则复制到某些指定文件夹,然后我可以稍后使用 sudo cp?有没有不是漏洞的选项?
答案1
使用 ssh (scp 是 ssh 的一个分支) 的基于密钥的身份验证是公钥加密的问题。您个人拥有一个私钥,并保密,并将公钥分发给所有人。
因此,为了回答您的问题,您不应该也不需要多个私钥,一个就足够了。然后,您将公钥上传到所有服务器。您应该将私钥的备份保存在安全的地方,并使用密码加密。
其次,将私钥存储在您正在访问的服务器上违背了公钥加密的理念;您没有对私钥保密。您的私钥应该安全地放在您身边,并对所有人保密;只有您才应该拥有私钥,其他人都不应该拥有。
跨服务器使用相同的用户名和公钥也是一个好习惯。
因此,请妥善保管您的单个私钥,并将公钥分发给您想要访问的所有服务器。现在,您可以使用同一个私钥登录所有服务器!
答案2
如果您需要在服务器之间交换数据,您可以查看scp -3 server1:path1 server2:path2
。它将传输数据并使用您的主机作为中间人(服务器之间无需直接连接)。
您还可以使用为每个服务器块设置的选项配置.ssh/config
文件:IdentityFile
Host server1
IdentityFile ~/.ssh/file1
Host server2
IdentityFile ~/.ssh/file2