批量加ssh key,无密码ssh登陆


1.     生成RSA Key pair,在跳转机上运行:

ssh-keygen -t rsa

然后一路回车跳过。


2.     将公钥的内容复制到 15机器上:

scp -P 12345  ~/.ssh/id_rsa.pub [email protected]:/home/dcplatform/lx/add_auth_key


3.     进入10.125.70.15下的/home/dcplatform/lx/add_auth_key目录


4.     将 公钥加入测试环境的IP列表:

cat ip_qa.txt | ./add_auth_key.pl 22


5.     将 公钥加入生产环境的IP列表:

cat ip_prod.txt | ./add_auth_key.pl 12345


6.     退回跳转机,将以下代码加入 ~/.bashrc

#QA Env

alias 7='ssh [email protected]'

alias 6='ssh [email protected]'

alias 5='ssh [email protected]'

alias 4='ssh [email protected]'

alias 3='ssh [email protected]'


#Prod Env

alias 50='ssh -p 12345 [email protected]'

alias 51='ssh -p 12345 [email protected]'

alias 52='ssh -p 12345 [email protected]'

alias 53='ssh -p 12345 [email protected]'


alias 100='ssh -p 12345 [email protected]'

alias 187='ssh -p 12345 [email protected]'


alias 15='ssh -p 12345 [email protected]'

alias 16='ssh -p 12345 [email protected]'


alias 17='ssh -p 12345 [email protected]'

alias 18='ssh -p 12345 [email protected]'

alias 19='ssh -p 12345 [email protected]'


7.     运行source ~/.bashrc,以后只需要输入15,50等数字就可以直接登录相应服务器了。




附:add_auth_key.pl代码

 

 

#!/usr/bin/perl -w
use strict;
use Expect; 
#$Expect::Exp_Internal = 1;
#$Expect::Log_Stdout = 1;

my $timeout = 3;

while(<STDIN>)
{
        chomp;
        my $ip = $_;
        printf "installing rsa key...\n";
        printf $ip."\n";
        my $exp = Expect->spawn("scp -o StrictHostKeyChecking=no -P $ARGV[0] id_rsa.pub dcplatform\@$ip:~/") or die "Couldn't spawn ssh, $!"; 
        $exp->raw_pty(1);
        $exp->log_file("output.log"); 

        if ($exp->expect($timeout,'password'))
        {
                $exp->send("y6a2!Hsa:5!h_D3\r");
        }
        $exp->soft_close();


        $exp = Expect->spawn("ssh -o StrictHostKeyChecking=no -p $ARGV[0] -l dcplatform $ip") or die "Couldn't spawn ssh, $!";
        $exp->raw_pty(1);
        if ($exp->expect($timeout,-re=>'password:'))
        {
                $exp->send("y6a2!Hsa:5!h_D3\n");
        }

        $exp->expect($timeout, -re=>'[$#]');
        $exp->send("mkdir -p .ssh\n");
        $exp->expect($timeout, -re=>'[$#]');
        $exp->send("cat id_rsa.pub >> ~/.ssh/authorized_keys\n");
        $exp->expect($timeout, -re=>'[$#]');
        $exp->send("chmod 700 .ssh; chmod 600 .ssh/authorized_keys\n");
        $exp->send("exit\n");
        $exp->soft_close();
}

printf "All done...\n";
 

 


猜你喜欢

转载自sznmail.iteye.com/blog/1387662
今日推荐