Changeset 2047 in ProjectBuilder


Ignore:
Timestamp:
Feb 20, 2016, 1:05:18 PM (8 years ago)
Author:
Bruno Cornec
Message:
  • Fix a bug in script2v by initializing pbstep to 3 as it wasn't defined (use mode)
  • Only use ECDSA ssh mode when DSA is not available to preserve compatibility
File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel/pb/bin/pb

    r2046 r2047  
    28072807$pbforce = 0 if (not defined $pbforce);
    28082808$snapme = 0 if (not defined $snapme);
     2809$pbstep = 3 if (not defined $pbstep);
    28092810
    28102811pb_log(2,"DEBUG: pb_script2v($vtype,$pbstep,$pbforce,$snapme)\n");
     
    44864487# Check whether ecdsa is accepted by the remote host
    44874488my $ecdsa = 0;
     4489my $dsa = 0;
    44884490open(SCAN,"ssh-keyscan -p $nport -t ecdsa $target 2>/dev/null |") || pb_log(0,"Unable to check ECDSA support for $target");
    44894491while(<SCAN>) {
     
    44924494close(SCAN);
    44934495
    4494 # We have specific keys by default
    4495 $keyfile = "$ENV{'HOME'}/.ssh/pb_ecdsa";
    4496 if (!(-e $keyfile) && ($create eq 1)) {
    4497     my $res = pb_system("ssh-keygen -q -b 1024 -N '' -f $keyfile -t ecdsa","Generating ECDSA SSH keys for pb");
    4498     $keyfile = "$ENV{'HOME'}/.ssh/pb_dsa";
    4499     if (($res != 0) && !(-e $keyfile) && ($create eq 1)) {
     4496open(SCAN,"ssh-keyscan -p $nport -t dsa $target 2>/dev/null |") || pb_log(0,"Unable to check DSA support for $target");
     4497while(<SCAN>) {
     4498    $ecdsa = 1 if ($_ =~ /ecdsa-/);
     4499}
     4500close(SCAN);
     4501
     4502# We have specific keys by default - create them if needed
     4503if (!(-e "$ENV{'HOME'}/.ssh/pb_ecdsa") && ($create eq 1)) {
     4504    my $res = pb_system("ssh-keygen -q -b 1024 -N '' -f $ENV{'HOME'}/.ssh/pb_ecdsa -t ecdsa","Generating ECDSA SSH keys for pb");
     4505    if (($res != 0) && !(-e "$ENV{'HOME'}/.ssh/pb_dsa") && ($create eq 1)) {
    45004506        # ecdsa may not be supported if old ssh
    4501         pb_system("ssh-keygen -q -b 1024 -N '' -f $keyfile -t dsa","Generating DSA SSH keys for pb");
    4502     }
    4503 }
    4504 
    4505 $keyfile = "$ENV{'HOME'}/.ssh/id_rsa" if (-s "$ENV{'HOME'}/.ssh/id_rsa");
    4506 $keyfile = "$ENV{'HOME'}/.ssh/id_dsa" if (-s "$ENV{'HOME'}/.ssh/id_dsa");
    4507 $keyfile = "$ENV{'HOME'}/.ssh/pb_dsa" if (-s "$ENV{'HOME'}/.ssh/pb_dsa");
    4508 $keyfile = "$ENV{'HOME'}/.ssh/pb_ecdsa" if ((-s "$ENV{'HOME'}/.ssh/pb_ecdsa") && ($ecdsa != 0));
     4507        pb_system("ssh-keygen -q -b 1024 -N '' -f $ENV{'HOME'}/.ssh/pb_dsa -t dsa","Generating DSA SSH keys for pb");
     4508    }
     4509}
     4510
     4511#$keyfile = "$ENV{'HOME'}/.ssh/id_rsa" if (-s "$ENV{'HOME'}/.ssh/id_rsa");
     4512# We still favoud DSA and fall back to ECDSA if not available
     4513if ($dsa != 0) {
     4514    $keyfile = "$ENV{'HOME'}/.ssh/id_dsa" if (-s "$ENV{'HOME'}/.ssh/id_dsa") ;
     4515    # And we favour a specific key over a generic one
     4516    $keyfile = "$ENV{'HOME'}/.ssh/pb_dsa" if (-s "$ENV{'HOME'}/.ssh/pb_dsa");
     4517} else {
     4518    $keyfile = "$ENV{'HOME'}/.ssh/id_ecdsa" if ((-s "$ENV{'HOME'}/.ssh/id_ecdsa") && ($ecdsa != 0));
     4519    # And we favour a specific key over a generic one
     4520    $keyfile = "$ENV{'HOME'}/.ssh/pb_ecdsa" if ((-s "$ENV{'HOME'}/.ssh/pb_ecdsa") && ($ecdsa != 0));
     4521}
    45094522die "Unable to find your public ssh key under $ENV{'HOME'}/.ssh" if (not defined $keyfile);
    45104523return($keyfile);
Note: See TracChangeset for help on using the changeset viewer.