utils.py 731 B

123456789101112131415161718
  1. from apps.setting.models import GlobalConfig
  2. from paramiko.rsakey import RSAKey
  3. from io import StringIO
  4. from libs.ssh import generate_ssh_key
  5. def generate_and_save_ssh_key():
  6. keys = GlobalConfig.query.filter(GlobalConfig.name.in_(['ssh_private_key', 'ssh_public_key'])).all()
  7. if len(keys) == 0:
  8. key_obj = StringIO()
  9. key = RSAKey.generate(2048)
  10. key.write_private_key(key_obj)
  11. private_key, public_key = generate_ssh_key()
  12. GlobalConfig(name='ssh_private_key', value=private_key, desc='SSH私钥').add()
  13. GlobalConfig(name='ssh_public_key', value=public_key, desc='SSH公钥').save()
  14. return key, key.get_base64()
  15. else:
  16. raise Exception('Already has ssh key')