涉及的三台计算机是
我想控制从B到C的数据传输,但我不想将我的aws密钥从A分发到B.所以计划是通过执行一些代码来设置从B到C的无密码ssh在A。
具体来说,我所做的就是
.ssh/authorized_keys
代码在这里,我使用python的原因是因为这个代码需要处理的其他任务和python比shell脚本更方便
_, path = tempfile.mkstemp()
os.system('scp B:~/.ssh/id_rsa.pub %s' % path)
cmd = 'cat %s | ssh -o StrictHostKeyChecking=no -i %s %s "cat >> .ssh/authorized_keys"' % (path, my_aws_credential, C)
os.system(cmd)
os.unlink(path)
这是一个可以接受的解决方案吗?有更好的方法吗?是否有可能不将B&#39的公钥作为文件下载到A?
提前感谢。
答案 0 :(得分:0)
退一步,确定目标范围(如果我误解了事情,请原谅我)。 B& B之间的沟通C是B& B之间的通信。 C,可以独立于A:如果你删除了那个约束,那么它就简化了事情。
对于AWS(或GCP等),您可以通过IAM& amp;管理访问控制。角色。因此,如果你设置B& B之间的互动C通过IAM,并且具有与A& A之间不同的角色/服务帐户C,那么B& B之间的沟通C根据您的规格进行控制。你的A机器仍然可以控制机器B,但现在它是一个不同的范例 - 控制结构可以是它自己的ssh密钥交换(你可以锁定对B的传入访问除了A之外的任何东西),或者你的某种bool通信协议python程序。
结束,在B& B之间创建你想要的控制结构。 C首先通过AWS IAM,然后在A& A之间创建(独立但“触发”或访问/布尔)协议。 B,你将实现目标。希望有所帮助。