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 -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";