[pve-devel] [PATCH] - preserve authorized_key key order - identify double keys by key and not by comment

Dietmar Maurer dietmar at proxmox.com
Thu Aug 30 07:05:24 CEST 2012


> +    my @lines = split(/\n/, $data);
> +    foreach my $line (@lines) {
> +        if ($line =~ m/^ssh-rsa\s+(\S+)\s+\S+$/) {
> +            next if ($vhash->{$1});
> +            $vhash->{$1} = 1;
> +        }
> +        $newdata .= $line . "\n";
>      }
> -
> -    $newdata .= join("", values(%$vhash));

Or:

diff --git a/data/PVE/Cluster.pm b/data/PVE/Cluster.pm
index a877d41..4b8a075 100644
--- a/data/PVE/Cluster.pm
+++ b/data/PVE/Cluster.pm
@@ -1018,13 +1018,11 @@ sub ssh_merge_keys {
     while ($data && $data =~ s/^((.*?)(\n|$))//) {
        my $line = "$2\n";
        if ($line =~ m/^ssh-rsa\s+\S+\s+(\S+)$/) {
-           $vhash->{$1} = $line;
-       } else {
-           $newdata .= $line;
+            next if $vhash->{$1};
+            $vhash->{$1} = 1;
        }
+       $newdata .= $line;
     }
-    
-    $newdata .= join("", values(%$vhash));
 
     PVE::Tools::file_set_contents($sshauthkeys, $newdata, 0600);
 }



More information about the pve-devel mailing list