如何使用python在两台远程机器之间设置无密码ssh?
涉及的三台计算机是如何使用python在两台远程机器之间设置无密码ssh?,python,amazon-web-services,amazon-ec2,ssh,Python,Amazon Web Services,Amazon Ec2,Ssh,涉及的三台计算机是 我的桌面 B:非aws服务器 C:一个AWSEC2实例 我想控制从B到C的数据传输,但我不想将aws密钥从A分发到B。因此,计划是通过在A上执行一些代码来设置从B到C的无密码ssh 具体来说,我所做的是 将B的公钥下载到A上的某个临时文件中 将该密钥附加到C的.ssh/authorized_密钥中 代码就在这里,我之所以使用python是因为该代码还需要处理其他任务,而且python比shell脚本更方便 _, path = tempfile.mkstemp() os.s
- 我的桌面
- B:非aws服务器
- C:一个AWSEC2实例
.ssh/authorized_密钥中
_, 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的公钥作为文件下载到a
提前感谢。退后一步,确定目标范围(如果我误解了事情,请原谅我)。B&C之间的通信是B&C之间的通信,它可以独立于A:如果你消除了这个约束,那么它就简化了事情 对于AWS(或GCP等),您可以通过IAM和角色管理访问控制。因此,如果您通过IAM设置了B&C之间的交互,并且与a&C之间的角色/服务帐户不同,则B&C之间的通信将按照您的规范进行控制。您的A机器仍然可以控制机器B,但现在它是一个不同的范例-控制结构可以是它自己的ssh密钥交换(您可以将对B的传入访问锁定为除A之外的任何内容),或者python程序中的某种bool通信协议
最后,首先通过AWS IAM在B&C之间创建您想要的控制结构,然后在A&B之间创建(独立但“触发”的或访问/bool)协议,您将实现目标。希望这能有所帮助。退一步,确定目标范围(如果我误解了事情,请原谅我)。B&C之间的通信是B&C之间的通信,它可以独立于A:如果你消除了这个约束,那么它就简化了事情 对于AWS(或GCP等),您可以通过IAM和角色管理访问控制。因此,如果您通过IAM设置了B&C之间的交互,并且与a&C之间的角色/服务帐户不同,则B&C之间的通信将按照您的规范进行控制。您的A机器仍然可以控制机器B,但现在它是一个不同的范例-控制结构可以是它自己的ssh密钥交换(您可以将对B的传入访问锁定为除A之外的任何内容),或者python程序中的某种bool通信协议
最后,首先通过AWS IAM在B&C之间创建您想要的控制结构,然后在A&B之间创建(独立但“触发”的或访问/bool)协议,您将实现目标。希望对您有所帮助。如果可能,请使用
ssh copy id
。最好不要重新发明轮子。如果可能,请使用ssh copy id
。最好不要重新发明轮子。我可以为非aws机器(即B)承担IAM角色吗?可以。好消息是有很多文档都涵盖了这一点,坏消息是有很多文档都涵盖了这一点。您肯定需要创建角色,然后分配角色以允许用户/机器连接。还要确保防火墙规则允许其他计算机连接。祝你好运我可以为非aws机器(即B)担任IAM角色吗?可以。好消息是有很多文档都涵盖了这一点,坏消息是有很多文档都涵盖了这一点。您肯定需要创建角色,然后分配角色以允许用户/机器连接。还要确保防火墙规则允许其他计算机连接。祝你好运