[pve-devel] [PATCH v2 common] Add validate_ssh_public_keys

Fabian Grünbichler f.gruenbichler at proxmox.com
Tue Apr 5 09:29:51 CEST 2016


validate format of SSH public keys using ssh-keygen -l and
temp files.
---
Changes to v1:
- use temp files instead of <<<
- skip whitespace lines
- silence output

 src/PVE/Tools.pm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
index 6627210..3f20868 100644
--- a/src/PVE/Tools.pm
+++ b/src/PVE/Tools.pm
@@ -1307,4 +1307,19 @@ sub tempfile_contents {
     return ("/proc/$$/fd/".$fh->fileno, $fh);
 }
 
+sub validate_ssh_public_keys {
+    my ($raw) = @_;
+    my @lines = split(/\n/, $raw);
+
+    foreach my $line (@lines) {
+	next if $line =~ m/^\s*$/;
+	eval {
+	    my ($filename, $handle) = tempfile_contents($line);
+	    run_command(["ssh-keygen", "-l", "-f", $filename],
+			outfunc => sub {}, errfunc => sub {});
+	};
+	die "SSH public key validation error\n" if $@;
+    }
+}
+
 1;
-- 
2.1.4




More information about the pve-devel mailing list