1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-04 16:11:49 +00:00
hetzner.hcloud/plugins/module_utils/ssh.py
Amirhossein Shaerpour 4fc2003f30
feat: allow recreating ssh key when public key in the API does not match (#634)
##### SUMMARY

- Log a warning when the provided public key does not match one in the
API.
- When the public key does not match the one in the API, allow
recreating the SSH Key in the API using the ``force=true`` argument.


Closes: #578 

##### ISSUE TYPE
- Feature Pull Request

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below
-->
`ssh_key`

##### ADDITIONAL INFORMATION
In Hetzner API, we do not have any public_key change endpoint and only
updating names and labels are allowed.
For public_key The only way is removing and re-creating. `force` option
allows users to do re-creation if needed.

---------

Co-authored-by: jo <ljonas@riseup.net>
2025-06-03 17:43:54 +02:00

18 lines
475 B
Python

from __future__ import annotations
from base64 import b64decode
from hashlib import md5
def ssh_public_key_md5_fingerprint(value: str) -> str:
"""
Compute the md5 fingerprint of a SSH public key.
"""
parts = value.strip().split()
if len(parts) < 2:
raise ValueError("invalid ssh public key")
raw = b64decode(parts[1].encode("ascii"))
digest = md5(raw).hexdigest()
return ":".join(a + b for a, b in zip(digest[::2], digest[1::2]))