Script to exchange ssh keys
1
#!/usr/bin/perl
2
use Expect;
3
#USAGE: ssh-key-exchange.pl
4
5 my $ip = $ARGV[0
];
6 my $login = $ARGV[ 1
];
7 my $password = $ARGV[2
];
8 my $private_key='/root/.ssh/id_rsa
';
9 my $public_key='/root/.ssh/id_rsa.pub
';
10 my $authorisedkeyfile='/root/.ssh/authorized_keys
';
11 my $timeout =
10;
12 my $aft =
new Expect;
13
14
#Generate the public and private key on the local m/c A
15 if(!(( -e $public_key ) &&( -e
$private_key ))) {
16 print "Generating the Public and Private Key:\n
";
17 @result=`ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ""
`;
18
#print @result;
19 }
20
#Copy the file to m/c B
21 print "Copying Public Key from A to B.\n
";
22 $aft->spawn("scp $public_key $login\@$ip:/tmp/
");
23 $aft->expect($timeout,[ qr'\? $' , sub { my $fh=shift; $fh->send("yes\n
"); exp_continue; } ],
24 [ 'Password: $',sub { my $fh=shift;$fh->send("$password \n
");exp_continue;} ],
25
# '-re','\# $'
26 );
27 $aft
->do_soft_close();
28
29
30
#Add Keys to authorised keys in B
31 print " Adding Keys to authorised key in B with IP=$ip,[ $login $password ] \n
";
32 my $aft =
new Expect;
33 $aft->log_file("/tmp/expect_log" ,"w
");
34 $aft->spawn( "ssh $login\@$ip") or die "Cannot ssh to the machine \n
";
35 $aft->expect($timeout,[ qr'\? $', sub { my $fh=shift;$fh ->send("yes\n
"); exp_continue; } ],
36 [ 'Password: $',sub { my $fh=shift;$fh->send("$password\n
");exp_continue;} ],
37 '-re', '\# $
'
38 );
39 $aft ->send("touch $authorisedkeyfile\n
");
40 $aft->expect($timeout,'-re' ,'\# $
');
41 $aft->send( "cat /tmp/id_rsa.pub >> $authorisedkeyfile\n
");
42 $aft->expect($timeout,'-re', '\# $
');
43 $aft->send(" exit\n
");
44 $aft
->do_soft_close();
45
1
#!/usr/bin/perl
2
use Expect;
3
#USAGE: ssh-key-exchange.pl
4
5 my $ip = $ARGV[0
];
6 my $login = $ARGV[ 1
];
7 my $password = $ARGV[2
];
8 my $private_key='/root/.ssh/id_rsa
';
9 my $public_key='/root/.ssh/id_rsa.pub
';
10 my $authorisedkeyfile='/root/.ssh/authorized_keys
';
11 my $timeout =
10;
12 my $aft =
new Expect;
13
14
#Generate the public and private key on the local m/c A
15 if(!(( -e $public_key ) &&( -e
$private_key ))) {
16 print "Generating the Public and Private Key:\n
";
17 @result=`ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ""
`;
18
#print @result;
19 }
20
#Copy the file to m/c B
21 print "Copying Public Key from A to B.\n
";
22 $aft->spawn("scp $public_key $login\@$ip:/tmp/
");
23 $aft->expect($timeout,[ qr'\? $' , sub { my $fh=shift; $fh->send("yes\n
"); exp_continue; } ],
24 [ 'Password: $',sub { my $fh=shift;$fh->send("$password \n
");exp_continue;} ],
25
# '-re','\# $'
26 );
27 $aft
->do_soft_close();
28
29
30
#Add Keys to authorised keys in B
31 print " Adding Keys to authorised key in B with IP=$ip,[ $login $password ] \n
";
32 my $aft =
new Expect;
33 $aft->log_file("/tmp/expect_log" ,"w
");
34 $aft->spawn( "ssh $login\@$ip") or die "Cannot ssh to the machine \n
";
35 $aft->expect($timeout,[ qr'\? $', sub { my $fh=shift;$fh ->send("yes\n
"); exp_continue; } ],
36 [ 'Password: $',sub { my $fh=shift;$fh->send("$password\n
");exp_continue;} ],
37 '-re', '\# $
'
38 );
39 $aft ->send("touch $authorisedkeyfile\n
");
40 $aft->expect($timeout,'-re' ,'\# $
');
41 $aft->send( "cat /tmp/id_rsa.pub >> $authorisedkeyfile\n
");
42 $aft->expect($timeout,'-re', '\# $
');
43 $aft->send(" exit\n
");
44 $aft
->do_soft_close();
45
No comments:
Post a Comment