|
@@ -9,6 +9,7 @@
|
|
|
#include <locale.h>
|
|
|
#include <pwd.h>
|
|
|
|
|
|
+#include "commands-common-ssh.h"
|
|
|
#include "qapi/error.h"
|
|
|
#include "qga-qapi-commands.h"
|
|
|
|
|
@@ -80,37 +81,6 @@ mkdir_for_user(const char *path, const struct passwd *p,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-static bool
|
|
|
-check_openssh_pub_key(const char *key, Error **errp)
|
|
|
-{
|
|
|
- /* simple sanity-check, we may want more? */
|
|
|
- if (!key || key[0] == '#' || strchr(key, '\n')) {
|
|
|
- error_setg(errp, "invalid OpenSSH public key: '%s'", key);
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- return true;
|
|
|
-}
|
|
|
-
|
|
|
-static bool
|
|
|
-check_openssh_pub_keys(strList *keys, size_t *nkeys, Error **errp)
|
|
|
-{
|
|
|
- size_t n = 0;
|
|
|
- strList *k;
|
|
|
-
|
|
|
- for (k = keys; k != NULL; k = k->next) {
|
|
|
- if (!check_openssh_pub_key(k->value, errp)) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- n++;
|
|
|
- }
|
|
|
-
|
|
|
- if (nkeys) {
|
|
|
- *nkeys = n;
|
|
|
- }
|
|
|
- return true;
|
|
|
-}
|
|
|
-
|
|
|
static bool
|
|
|
write_authkeys(const char *path, const GStrv keys,
|
|
|
const struct passwd *p, Error **errp)
|
|
@@ -139,21 +109,6 @@ write_authkeys(const char *path, const GStrv keys,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-static GStrv
|
|
|
-read_authkeys(const char *path, Error **errp)
|
|
|
-{
|
|
|
- g_autoptr(GError) err = NULL;
|
|
|
- g_autofree char *contents = NULL;
|
|
|
-
|
|
|
- if (!g_file_get_contents(path, &contents, NULL, &err)) {
|
|
|
- error_setg(errp, "failed to read '%s': %s", path, err->message);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- return g_strsplit(contents, "\n", -1);
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
void
|
|
|
qmp_guest_ssh_add_authorized_keys(const char *username, strList *keys,
|
|
|
bool has_reset, bool reset,
|