我正在尝试从使用ec2/boto生成的私钥创建公钥,如下所示:
key_pair = ec2.create_key_pair(name)
private_key = '{}.pem'.format(name)
public_key = subprocess.check_output("ssh-keygen -y -f #{}".format(private_key))
一开始,我认为这可能是一个权限问题,所以我改变了如下权限:
os.chmod(private_key, 0o400)
但是,我仍然得到一个OSError[Errno 2]错误。错误如下所示
Traceback (most recent call last):
File "infrastructure.py", line 425, in <module>
main(arguments)
File "infrastructure.py", line 374, in main
key_pair_name=arguments['--keypair'])
File "infrastructure.py", line 387, in create
key_pair_name, key_pair_fingerprint, key_pair_pem = create_key_pair(key_pair_name, region)
File "infrastructure.py",line 65, in create_key_pair
raise e
OSError: [Errno 2] No such file or directory
尝试切换到
subprocess
的非shell解释的参数集。在此过程中,还可以考虑显式指定ssh-keygen
的完整路径:所以我发现了我的问题。此行出错:
public_key = subprocess.check_output("ssh-keygen -y -f #{}".format(private_key))
我通过以下方法解决了这个问题:
os.chmod(private_key, 0o400) command = "ssh-keygen -y -f {}".format(private_key) public_key = subprocess.check_output(['bash','-c', command])
我仍然不知道为什么会发生这个问题,但它现在起作用了。你知道吗
相关问题 更多 >
编程相关推荐