【发布时间】:2017-09-29 22:15:36
【问题描述】:
涉及的三台电脑是
- 答:我的桌面
- B:非 AWS 服务器
- C:AWS EC2 实例
我想控制从 B 到 C 的数据传输,但我不想将我的 aws 密钥从 A 分发到 B。所以计划是通过在 A 上执行一些代码来设置从 B 到 C 的无密码 ssh .
具体来说,我所做的是
- 将 B 的公钥下载到 A 上的某个临时文件中
- 将该键附加到 C 的
.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的公钥作为文件下载到A?
提前致谢。
【问题讨论】:
-
如果可能,请使用
ssh-copy-id。最好不要重新发明轮子。
标签: python amazon-web-services amazon-ec2 ssh