On Sat, Aug 11, 2012 at 11:21:02PM +0200, Peter Krempa wrote:
This patch adds URI options to support libssh2 transport in the
remote
driver.
A new transport sceme is introduced eg. "qemu+libssh://..." that
utilizes the libssh2 code added in previous patches.
The libssh2 code requires the authentication callback to be able to
perform keyboard-interactive authentication or to ask t passprhases or
add host keys to known hosts database.
Added URI components:
- known_hosts - path to a knownHosts file in OpenSSH format to check
for known ssh host keys
- known_hosts_verify - how to deal with server key verification:
* "normal" (default) - ask to add new keys
* "auto" - automaticaly add new keys
* "ignore" - don't validate host keys
- auth - authentication methods to use. Default is
"agent,privkey,keyboard-interactive". It's a comma separated
string of methods to try while authenticating. The order is
preserved. Some of the methods may require additional
parameters.
- password - Password for password authentication.
NACK to adding 'password' as a parameter. It is not safe to provide
passwords in URIs, and we already have explicit support for providing
passwords via a libvirt config file.
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 8153d70..9b5677d 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -385,6 +385,8 @@ static void remoteClientCloseFunc(virNetClientPtr client
ATTRIBUTE_UNUSED,
* - xxx+tcp:/// -> TCP connection to localhost
* - xxx+unix:/// -> UNIX domain socket
* - xxx:/// -> UNIX domain socket
+ * - xxx+ssh:/// -> SSH connection (legacy)
+ * - xxx+libssh2:/// -> SSH connection (using libssh2)
*/
static int
doRemoteOpen(virConnectPtr conn,
@@ -397,6 +399,7 @@ doRemoteOpen(virConnectPtr conn,
trans_tls,
trans_unix,
trans_ssh,
+ trans_libssh2,
trans_ext,
trans_tcp,
} transport;
@@ -439,6 +442,8 @@ doRemoteOpen(virConnectPtr conn,
}
} else if (STRCASEEQ(transport_str, "ssh"))
transport = trans_ssh;
+ else if (STRCASEEQ(transport_str, "libssh2"))
+ transport = trans_libssh2;
else if (STRCASEEQ(transport_str, "ext"))
transport = trans_ext;
else if (STRCASEEQ(transport_str, "tcp"))
@@ -446,7 +451,7 @@ doRemoteOpen(virConnectPtr conn,
else {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("remote_open: transport in URL not recognised
"
- "(should be tls|unix|ssh|ext|tcp)"));
+ "(should be
tls|unix|ssh|ext|tcp|libssh2)"));
return VIR_DRV_OPEN_ERROR;
}
}
@@ -460,10 +465,12 @@ doRemoteOpen(virConnectPtr conn,
* get freed in the failed: path.
*/
char *name = NULL, *command = NULL, *sockname = NULL, *netcat = NULL;
- char *port = NULL, *authtype = NULL, *username = NULL;
+ char *port = NULL, *authtype = NULL, *username = NULL, *password = NULL;
bool sanity = true, verify = true, tty ATTRIBUTE_UNUSED = true;
char *pkipath = NULL, *keyfile = NULL;
+ char *knownHostsVerify = NULL, *knownHosts = NULL;
+
/* Return code from this function, and the private data. */
int retcode = VIR_DRV_OPEN_ERROR;
@@ -508,6 +515,9 @@ doRemoteOpen(virConnectPtr conn,
EXTRACT_URI_ARG_STR("netcat", netcat);
EXTRACT_URI_ARG_STR("keyfile", keyfile);
EXTRACT_URI_ARG_STR("pkipath", pkipath);
+ EXTRACT_URI_ARG_STR("known_hosts", knownHosts);
+ EXTRACT_URI_ARG_STR("known_hosts_verify", knownHostsVerify);
+ EXTRACT_URI_ARG_STR("password", password);
So remove this password param
ACK, if the password URI param is removed
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|