读书人

批量添ssh key无密码ssh登陆

发布时间: 2012-08-25 10:06:20 作者: rapoo

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


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

ssh-keygen -t rsa

然后一路回车跳过。


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

scp -P 12345 ?~/.ssh/id_rsa.pub dcplatform@10.125.70.15:/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 dcplatform@10.131.18.7'

alias 6='ssh dcplatform@10.131.18.6'

alias 5='ssh dcplatform@10.131.18.5'

alias 4='ssh dcplatform@10.131.18.4'

alias 3='ssh dcplatform@10.131.18.3'


#Prod Env

alias 50='ssh -p 12345 dcplatform@10.125.42.50'

alias 51='ssh -p 12345 dcplatform@10.125.42.51'

alias 52='ssh -p 12345 dcplatform@10.125.42.52'

alias 53='ssh -p 12345 dcplatform@10.125.42.53'


alias 100='ssh -p 12345 dcplatform@10.125.42.100'

alias 187='ssh -p 12345 dcplatform@10.133.10.187'


alias 15='ssh -p 12345 dcplatform@10.125.70.15'

alias 16='ssh -p 12345 dcplatform@10.125.70.16'


alias 17='ssh -p 12345 dcplatform@10.125.70.17'

alias 18='ssh -p 12345 dcplatform@10.125.70.18'

alias 19='ssh -p 12345 dcplatform@10.125.70.19'


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




附:add_auth_key.pl代码

?

?

#!/usr/bin/perl -wuse 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";
?

?

?


读书人网 >其他相关

热点推荐