def ssh_copy_keys(hostname, username=None): LOG.info("making sure passwordless SSH succeeds") if ssh.can_connect_passwordless(hostname): return LOG.warning("could not connect via SSH") # Create the key if it doesn't exist: id_rsa_pub_file = os.path.expanduser(u"~/.ssh/id_rsa.pub") id_rsa_file = id_rsa_pub_file.split(".pub")[0] if not os.path.exists(id_rsa_file): LOG.info("creating a passwordless id_rsa.pub key file") with get_local_connection(LOG) as conn: remoto.process.run(conn, ["ssh-keygen", "-t", "rsa", "-N", "", "-f", id_rsa_file]) # Get the contents of id_rsa.pub and push it to the host LOG.info("will connect again with password prompt") distro = hosts.get(hostname, username) # XXX Add username auth_keys_path = ".ssh/authorized_keys" if not distro.conn.remote_module.path_exists(auth_keys_path): distro.conn.logger.warning(".ssh/authorized_keys does not exist, will skip adding keys") else: LOG.info("adding public keys to authorized_keys") with open(os.path.expanduser("~/.ssh/id_rsa.pub"), "r") as id_rsa: contents = id_rsa.read() distro.conn.remote_module.append_to_file(auth_keys_path, contents) distro.conn.exit()
def ssh_copy_keys(hostname, username=None): LOG.info('making sure passwordless SSH succeeds') if ssh.can_connect_passwordless(hostname): return LOG.warning('could not connect via SSH') # Create the key if it doesn't exist: id_rsa_pub_file = os.path.expanduser(u'~/.ssh/id_rsa.pub') id_rsa_file = id_rsa_pub_file.split('.pub')[0] if not os.path.exists(id_rsa_file): LOG.info('creating a passwordless id_rsa.pub key file') with get_local_connection(LOG) as conn: remoto.process.run( conn, [ 'ssh-keygen', '-t', 'rsa', '-N', "", '-f', id_rsa_file, ] ) # Get the contents of id_rsa.pub and push it to the host LOG.info('will connect again with password prompt') distro = hosts.get(hostname, username, detect_sudo=False) auth_keys_path = '.ssh/authorized_keys' if not distro.conn.remote_module.path_exists(auth_keys_path): distro.conn.logger.warning( '.ssh/authorized_keys does not exist, will skip adding keys' ) else: LOG.info('adding public keys to authorized_keys') with open(os.path.expanduser('~/.ssh/id_rsa.pub'), 'r') as id_rsa: contents = id_rsa.read() distro.conn.remote_module.append_to_file( auth_keys_path, contents ) distro.conn.exit()
def ssh_copy_keys(hostname, username=None): LOG.info('making sure passwordless SSH succeeds') if ssh.can_connect_passwordless(hostname): return LOG.warning('could not connect via SSH') # Create the key if it doesn't exist: id_rsa_pub_file = os.path.expanduser(u'~/.ssh/id_rsa.pub') id_rsa_file = id_rsa_pub_file.split('.pub')[0] if not os.path.exists(id_rsa_file): LOG.info('creating a passwordless id_rsa.pub key file') with get_local_connection(LOG) as conn: remoto.process.run( conn, [ 'ssh-keygen', '-t', 'rsa', '-N', "", '-f', id_rsa_file, ] ) # Get the contents of id_rsa.pub and push it to the host LOG.info('will connect again with password prompt') distro = hosts.get(hostname, username) # XXX Add username auth_keys_path = '.ssh/authorized_keys' if not distro.conn.remote_module.path_exists(auth_keys_path): distro.conn.logger.warning( '.ssh/authorized_keys does not exist, will skip adding keys' ) else: LOG.info('adding public keys to authorized_keys') with open(os.path.expanduser('~/.ssh/id_rsa.pub'), 'r') as id_rsa: contents = id_rsa.read() distro.conn.remote_module.append_to_file( auth_keys_path, contents ) distro.conn.exit()