shell编程之自动化ssh无密登陆

实现无密登陆的过程:
在执行完ssh-keygen生成密钥,生成之后会在用户的根目录生成一个 “.ssh”的文件夹
文件夹中包含了:
 authorized_keys :存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
  id_rsa : 生成的私钥文件
  id_rsa.pub : 生成的公钥文件

  know_hosts : 已知的主机公钥清单
然后将远程服务器(即要远程登陆的服务器)的公钥( id_rsa.pub )拷贝到要登陆的服务器( authorized_keys )文件中

我这里给出了copy公钥的脚本
编写脚本:
首先新建文件 sshcopy.sh

#!/usr/bin/expect
set name [lindex $argv 0]
set u_pass "hadoop"
spawn ssh-copy-id -i .ssh/id_rsa.pub root@hdp-server0$name
        expect {
                "yes/no" { send "yes\n";exp_continue}
                "password" { send "$u_pass\n"}
         }
        expect eof
EOF

写好保存
加上执行权限: chmod a+rwx sshcopy.sh
最后即可执行:
例如:
./sshcopy.sh 1

代码二:
#!/bin/bash
services="host02 host03"
password=hadoop
auto_ssh()
{
   expect -c "set timeout -1;
     spawn   ssh-copy-id $1;
   expect {
        "*(yes/no)*" {send yes\r; exp_continue;}
        "*(password*)"{send $2\r;exp_continue;}
        eof  {exit 0;}
    }";      
}
ssh_copy()
{
    for service in $services
    do
       auto_ssh() $service $password
    done
}
ssh_copy
写好保存
加上执行权限: chmod a+rwx sshcopy.sh
最后即可执行:
例如:
./sshcopy.sh

如有错误,希望大家指出,万分感谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值