Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨多个主机共享SSH密钥_Ssh_Distributed Computing_Ssh Keys_Aws Kms - Fatal编程技术网

跨多个主机共享SSH密钥

跨多个主机共享SSH密钥,ssh,distributed-computing,ssh-keys,aws-kms,Ssh,Distributed Computing,Ssh Keys,Aws Kms,我正在构建一个跨多台机器分发的服务,该服务登录到其他目标机器并执行操作(写入文件、运行shell脚本等) 目前,我已将此服务配置为使用用户名和密码作为身份验证的一种形式,以便通过ssh连接到目标机器,但它需要在目标机器上进行一些额外的引导才能正常工作。我想转到公钥/私钥身份验证模型 我的问题是,由于此服务分布在多个主机上,因此将私钥存储在安全位置(例如使用AWS KMS或其他类似服务)并让我的每台机器从该安全位置读取是否是一种不好的做法,或者我应该为我的每台机器都提供私钥吗?让所有机器从中心位置

我正在构建一个跨多台机器分发的服务,该服务登录到其他目标机器并执行操作(写入文件、运行shell脚本等)

目前,我已将此服务配置为使用用户名和密码作为身份验证的一种形式,以便通过ssh连接到目标机器,但它需要在目标机器上进行一些额外的引导才能正常工作。我想转到公钥/私钥身份验证模型


我的问题是,由于此服务分布在多个主机上,因此将私钥存储在安全位置(例如使用AWS KMS或其他类似服务)并让我的每台机器从该安全位置读取是否是一种不好的做法,或者我应该为我的每台机器都提供私钥吗?

让所有机器从中心位置获取ssh密钥并不比从中心位置获取用户名和密码更糟糕。但是,他们获取ssh密钥的连接应该是安全的,这可能意味着您必须在每台机器上本地存储至少一个密钥(到达您的中心位置的密钥)。

我的回答是,最好为每台机器都存储一个私钥

这样,如果私钥被盗,只有一台机器受损,而不是所有机器


此外,您只需要保护私钥。根据定义,公钥是公共的。如果你喜欢,可以在Twitter上发布你的公钥。它不会产生任何影响。

您可以使用基于区块链的分散式PKI 系统EMCSSH:

免责声明:
我是这个系统的作者,将回答任何问题

是的,我认为我不必保护公众。我对非对称加密不太熟悉,你能不能将不同的私钥与同一公钥相关联?不能。私钥总是与一个公钥相关联。反之亦然。啊哈。我不确定这是否是我想要的方法,我需要共享公钥,以便将其分发到我的服务器场将要登录的目标机器。这就提出了一个有趣的折衷方案,你可以给目标机器所有的公钥。但的确,这是一种隔离/可管理性权衡。你也可以有一组不是1-1映射到客户端的密钥对,但是仍然提供了一些隔离。我不是100%确定我是否了解你。你是说每台机器都应该有一个本地存储的密钥,如果没有,它应该从集中的安全位置检索它?我是说访问你所说的“目标”机器的密钥将存储在中心位置,但机器仍然需要能够访问中心位置。因此,您仍然需要在每台机器上存储一个某种密钥或密码,但即使您正在访问一整组目标机器,也不需要存储一整组密钥或密码。