提交 9a0e6a8f 编写于 作者: O Oskari Saarenmaa 提交者: Matthias Bolte

remote/ssh: support for no_verify.

Set StrictHostKeyChecking=no to auto-accept new ssh host keys if the
no_verify extra parameter was specified.  This won't disable host key
checking for already known hosts.  Includes a test and documentation.
上级 2851d378
...@@ -184,6 +184,7 @@ Patches have also been contributed by: ...@@ -184,6 +184,7 @@ Patches have also been contributed by:
John Williams <john.williams@petalogix.com> John Williams <john.williams@petalogix.com>
Michael Santos <michael.santos@gmail.com> Michael Santos <michael.santos@gmail.com>
Alex Jia <ajia@redhat.com> Alex Jia <ajia@redhat.com>
Oskari Saarenmaa <os@ohmu.fi>
[....send patches to get your name here....] [....send patches to get your name here....]
......
...@@ -279,9 +279,14 @@ Note that parameter values must be ...@@ -279,9 +279,14 @@ Note that parameter values must be
<td> <td>
<code>no_verify</code> <code>no_verify</code>
</td> </td>
<td> tls </td> <td> ssh, tls </td>
<td> <td>
If set to a non-zero value, this disables client checks of the SSH: If set to a non-zero value, this disables client's strict host key
checking making it auto-accept new host keys. Existing host keys will
still be validated.
<br/>
<br/>
TLS: If set to a non-zero value, this disables client checks of the
server's certificate. Note that to disable server checks of server's certificate. Note that to disable server checks of
the client's certificate or IP address you must the client's certificate or IP address you must
<a href="#Remote_libvirtd_configuration">change the libvirtd <a href="#Remote_libvirtd_configuration">change the libvirtd
......
...@@ -571,6 +571,7 @@ doRemoteOpen (virConnectPtr conn, ...@@ -571,6 +571,7 @@ doRemoteOpen (virConnectPtr conn,
command, command,
username, username,
no_tty, no_tty,
no_verify,
netcat ? netcat : "nc", netcat ? netcat : "nc",
sockname))) sockname)))
goto failed; goto failed;
......
...@@ -187,12 +187,13 @@ virNetClientPtr virNetClientNewSSH(const char *nodename, ...@@ -187,12 +187,13 @@ virNetClientPtr virNetClientNewSSH(const char *nodename,
const char *binary, const char *binary,
const char *username, const char *username,
bool noTTY, bool noTTY,
bool noVerify,
const char *netcat, const char *netcat,
const char *path) const char *path)
{ {
virNetSocketPtr sock; virNetSocketPtr sock;
if (virNetSocketNewConnectSSH(nodename, service, binary, username, noTTY, netcat, path, &sock) < 0) if (virNetSocketNewConnectSSH(nodename, service, binary, username, noTTY, noVerify, netcat, path, &sock) < 0)
return NULL; return NULL;
return virNetClientNew(sock, NULL); return virNetClientNew(sock, NULL);
......
...@@ -44,6 +44,7 @@ virNetClientPtr virNetClientNewSSH(const char *nodename, ...@@ -44,6 +44,7 @@ virNetClientPtr virNetClientNewSSH(const char *nodename,
const char *binary, const char *binary,
const char *username, const char *username,
bool noTTY, bool noTTY,
bool noVerify,
const char *netcat, const char *netcat,
const char *path); const char *path);
......
...@@ -576,6 +576,7 @@ int virNetSocketNewConnectSSH(const char *nodename, ...@@ -576,6 +576,7 @@ int virNetSocketNewConnectSSH(const char *nodename,
const char *binary, const char *binary,
const char *username, const char *username,
bool noTTY, bool noTTY,
bool noVerify,
const char *netcat, const char *netcat,
const char *path, const char *path,
virNetSocketPtr *retsock) virNetSocketPtr *retsock)
...@@ -596,6 +597,8 @@ int virNetSocketNewConnectSSH(const char *nodename, ...@@ -596,6 +597,8 @@ int virNetSocketNewConnectSSH(const char *nodename,
if (noTTY) if (noTTY)
virCommandAddArgList(cmd, "-T", "-o", "BatchMode=yes", virCommandAddArgList(cmd, "-T", "-o", "BatchMode=yes",
"-e", "none", NULL); "-e", "none", NULL);
if (noVerify)
virCommandAddArgList(cmd, "-o", "StrictHostKeyChecking=no", NULL);
virCommandAddArgList(cmd, nodename, virCommandAddArgList(cmd, nodename,
netcat ? netcat : "nc", netcat ? netcat : "nc",
"-U", path, NULL); "-U", path, NULL);
......
...@@ -67,6 +67,7 @@ int virNetSocketNewConnectSSH(const char *nodename, ...@@ -67,6 +67,7 @@ int virNetSocketNewConnectSSH(const char *nodename,
const char *binary, const char *binary,
const char *username, const char *username,
bool noTTY, bool noTTY,
bool noVerify,
const char *netcat, const char *netcat,
const char *path, const char *path,
virNetSocketPtr *addr); virNetSocketPtr *addr);
......
...@@ -377,6 +377,7 @@ struct testSSHData { ...@@ -377,6 +377,7 @@ struct testSSHData {
const char *binary; const char *binary;
const char *username; const char *username;
bool noTTY; bool noTTY;
bool noVerify;
const char *netcat; const char *netcat;
const char *path; const char *path;
...@@ -397,6 +398,7 @@ static int testSocketSSH(const void *opaque) ...@@ -397,6 +398,7 @@ static int testSocketSSH(const void *opaque)
data->binary, data->binary,
data->username, data->username,
data->noTTY, data->noTTY,
data->noVerify,
data->netcat, data->netcat,
data->path, data->path,
&csock) < 0) &csock) < 0)
...@@ -503,6 +505,7 @@ mymain(void) ...@@ -503,6 +505,7 @@ mymain(void)
.username = "fred", .username = "fred",
.netcat = "netcat", .netcat = "netcat",
.noTTY = true, .noTTY = true,
.noVerify = false,
.path = "/tmp/socket", .path = "/tmp/socket",
.expectOut = "-p 9000 -l fred -T -o BatchMode=yes -e none somehost netcat -U /tmp/socket\n", .expectOut = "-p 9000 -l fred -T -o BatchMode=yes -e none somehost netcat -U /tmp/socket\n",
}; };
...@@ -510,20 +513,33 @@ mymain(void) ...@@ -510,20 +513,33 @@ mymain(void)
ret = -1; ret = -1;
struct testSSHData sshData3 = { struct testSSHData sshData3 = {
.nodename = "nosuchhost", .nodename = "somehost",
.service = "9000",
.username = "fred",
.netcat = "netcat",
.noTTY = false,
.noVerify = true,
.path = "/tmp/socket", .path = "/tmp/socket",
.failConnect = true, .expectOut = "-p 9000 -l fred -o StrictHostKeyChecking=no somehost netcat -U /tmp/socket\n",
}; };
if (virtTestRun("SSH test 3", 1, testSocketSSH, &sshData3) < 0) if (virtTestRun("SSH test 3", 1, testSocketSSH, &sshData3) < 0)
ret = -1; ret = -1;
struct testSSHData sshData4 = { struct testSSHData sshData4 = {
.nodename = "nosuchhost",
.path = "/tmp/socket",
.failConnect = true,
};
if (virtTestRun("SSH test 4", 1, testSocketSSH, &sshData4) < 0)
ret = -1;
struct testSSHData sshData5 = {
.nodename = "crashyhost", .nodename = "crashyhost",
.path = "/tmp/socket", .path = "/tmp/socket",
.expectOut = "crashyhost nc -U /tmp/socket\n", .expectOut = "crashyhost nc -U /tmp/socket\n",
.dieEarly = true, .dieEarly = true,
}; };
if (virtTestRun("SSH test 4", 1, testSocketSSH, &sshData4) < 0) if (virtTestRun("SSH test 5", 1, testSocketSSH, &sshData5) < 0)
ret = -1; ret = -1;
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册