Fix ssh key printing
This commit is contained in:
		
							parent
							
								
									dcf5001c0a
								
							
						
					
					
						commit
						bb974cc9d2
					
				
							
								
								
									
										79
									
								
								cloud-init-0.7.0-ssh-key-users.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								cloud-init-0.7.0-ssh-key-users.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | |||||||
|  | Index: trunk/cloudinit/config/cc_ssh_authkey_fingerprints.py
 | ||||||
|  | ===================================================================
 | ||||||
|  | --- trunk.orig/cloudinit/config/cc_ssh_authkey_fingerprints.py
 | ||||||
|  | +++ trunk/cloudinit/config/cc_ssh_authkey_fingerprints.py
 | ||||||
|  | @@ -21,7 +21,8 @@ import hashlib
 | ||||||
|  |   | ||||||
|  |  from prettytable import PrettyTable | ||||||
|  |   | ||||||
|  | -from cloudinit import ssh_util
 | ||||||
|  | +from cloudinit.ssh_util import extract_authorized_keys as eak
 | ||||||
|  | +
 | ||||||
|  |  from cloudinit import util | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -40,8 +41,9 @@ def _gen_fingerprint(b64_text, hash_meth
 | ||||||
|  |          hasher = hashlib.new(hash_meth) | ||||||
|  |          hasher.update(base64.b64decode(b64_text)) | ||||||
|  |          return ":".join(_split_hash(hasher.hexdigest())) | ||||||
|  | -    except TypeError:
 | ||||||
|  | -        # Raised when b64 not really b64...
 | ||||||
|  | +    except (TypeError, ValueError):
 | ||||||
|  | +        # Raised when b64 not really b64... or
 | ||||||
|  | +        # when the hash type isn't valid
 | ||||||
|  |          return '?' | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -84,13 +86,48 @@ def _pprint_key_entries(user, key_fn, ke
 | ||||||
|  |                         stderr=False, console=True) | ||||||
|  |   | ||||||
|  |   | ||||||
|  | +def translate_user_name(uname, distro, log):
 | ||||||
|  | +    if not uname:
 | ||||||
|  | +        uname = ''
 | ||||||
|  | +    uname = uname.strip()
 | ||||||
|  | +    real_name = None
 | ||||||
|  | +    if uname.lower() == 'default':
 | ||||||
|  | +        try:
 | ||||||
|  | +            real_name = distro.get_default_user()
 | ||||||
|  | +        except NotImplementedError:
 | ||||||
|  | +            log.warn("Distro has not implemented default user "
 | ||||||
|  | +                     "creation. No default user will be translated.")
 | ||||||
|  | +    else:
 | ||||||
|  | +        real_name = uname
 | ||||||
|  | +    return real_name
 | ||||||
|  | +
 | ||||||
|  | +
 | ||||||
|  |  def handle(name, cfg, cloud, log, _args): | ||||||
|  |      if 'no_ssh_fingerprints' in cfg: | ||||||
|  |          log.debug(("Skipping module named %s, " | ||||||
|  |                     "logging of ssh fingerprints disabled"), name) | ||||||
|  | +        return
 | ||||||
|  | +
 | ||||||
|  | +    if not 'users' in cfg:
 | ||||||
|  | +        log.debug(("Skipping module named %s, "
 | ||||||
|  | +                   "logging of ssh fingerprints disabled "
 | ||||||
|  | +                   "since no user/s provided"), name)
 | ||||||
|  | +        return
 | ||||||
|  | +
 | ||||||
|  | +    users_to_hash = []
 | ||||||
|  | +    for user_config in cfg['users']:
 | ||||||
|  | +        user_name = None
 | ||||||
|  | +        if isinstance(user_config, (basestring, str)):
 | ||||||
|  | +            user_name = translate_user_name(user_config, cloud.distro, log)
 | ||||||
|  | +        elif isinstance(user_config, (dict)):
 | ||||||
|  | +            if 'name' in user_config:
 | ||||||
|  | +                user_name = translate_user_name(user_config['name'],
 | ||||||
|  | +                                                cloud.distro, log)
 | ||||||
|  | +        if user_name:
 | ||||||
|  | +            users_to_hash.append(user_name)
 | ||||||
|  |   | ||||||
|  | -    user_name = util.get_cfg_option_str(cfg, "user", "ubuntu")
 | ||||||
|  |      hash_meth = util.get_cfg_option_str(cfg, "authkey_hash", "md5") | ||||||
|  | -    extract = ssh_util.extract_authorized_keys
 | ||||||
|  | -    (auth_key_fn, auth_key_entries) = extract(user_name, cloud.paths)
 | ||||||
|  | -    _pprint_key_entries(user_name, auth_key_fn, auth_key_entries, hash_meth)
 | ||||||
|  | +    for user_name in users_to_hash:
 | ||||||
|  | +        (auth_key_fn, auth_key_entries) = eak(user_name, cloud.paths)
 | ||||||
|  | +        _pprint_key_entries(user_name, auth_key_fn,
 | ||||||
|  | +                            auth_key_entries, hash_meth)
 | ||||||
| @ -16,6 +16,9 @@ Patch0:         cloud-init-0.7.0-fedora.patch | |||||||
| # Make Fedora use the same hostname-updating code as Debian (/etc/hostname) | # Make Fedora use the same hostname-updating code as Debian (/etc/hostname) | ||||||
| # https://code.launchpad.net/~gholms/cloud-init/hostname-refactor/+merge/125869 | # https://code.launchpad.net/~gholms/cloud-init/hostname-refactor/+merge/125869 | ||||||
| Patch1:         cloud-init-0.7.0-hostname-refactor.patch | Patch1:         cloud-init-0.7.0-hostname-refactor.patch | ||||||
|  | # Fix fingerprint printing caused by recent user code refactoring | ||||||
|  | # https://code.launchpad.net/~harlowja/cloud-init/patch-ssh-key-users/+merge/125606 | ||||||
|  | Patch2:         cloud-init-0.7.0-ssh-key-users.patch | ||||||
| 
 | 
 | ||||||
| BuildArch:      noarch | BuildArch:      noarch | ||||||
| BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) | ||||||
| @ -52,6 +55,7 @@ ssh keys and to let the user run various scripts. | |||||||
| %setup -q -n %{name}-%{version}-bzr659 | %setup -q -n %{name}-%{version}-bzr659 | ||||||
| %patch0 -p1 | %patch0 -p1 | ||||||
| %patch1 -p1 | %patch1 -p1 | ||||||
|  | %patch2 -p1 | ||||||
| 
 | 
 | ||||||
| cp -p %{SOURCE2} README.fedora | cp -p %{SOURCE2} README.fedora | ||||||
| 
 | 
 | ||||||
| @ -132,6 +136,7 @@ fi | |||||||
| * Sat Sep 22 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 0.7.0-0.2.bzr659 | * Sat Sep 22 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 0.7.0-0.2.bzr659 | ||||||
| - Rebased against upstream rev 659 | - Rebased against upstream rev 659 | ||||||
| - Fixed hostname persistence | - Fixed hostname persistence | ||||||
|  | - Fixed ssh key printing | ||||||
| 
 | 
 | ||||||
| * Mon Sep 17 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 0.7.0-0.1.bzr650 | * Mon Sep 17 2012 Garrett Holmstrom <gholms@fedoraproject.org> - 0.7.0-0.1.bzr650 | ||||||
| - Rebased against upstream rev 650 | - Rebased against upstream rev 650 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user