Shell脚本——设置ssh免密

功能:实现多台linux主机之间root用户的免密设置

主机名:node101~node106

在node101上切换至root用户,编写以下脚本内容:

#!/bin/bash
#使用root用户
#在node101上创建秘钥,默认生成路径为:/root/.ssh/
ssh-keygen #在.ssh/ 下生成文件:id_rsa(密钥/私钥),id_rsa.pub(公钥),known_hosts(已知的主机)
ssh-copy-id root@node101 #公钥发送,在目标主机的.ssh/下生成authorized_keys文件,同时将id_rsa.pub中的内容复制到该文件中。

array=(102 103 104 105 106)

for (( i=0;i<${#array[*]};i++ ))
do
    #分别在主机node102~node106上创建rsa加密
    ssh node${array[i]} ssh-keygen #此处生成的id_rsa及id_rsa.pub文件在主机node${array[i]}上,known_hosts文件在node101上
    #先将各主机上id_rsa.pub中的内容拷贝到node101的id_rsa1.pub文件中。(每次拷贝都会覆盖原有的内容)
    scp root@node${array[i]}:/root/.ssh/id_rsa.pub /root/.ssh/id_rsa1.pub  
    #再将上面拷贝的内容添加至node101的authorized_keys(在原有内容下面添加,不会覆盖原有内容)   
    cat /root/.ssh/id_rsa1.pub >> /root/.ssh/authorized_keys 
done

for (( i=0;i<${#array[*]};i++ ))
do
    #将node101上 含有主机node101~node106公钥的文件authorized_keys 发送至主机node102~node106
    scp /root/.ssh/authorized_keys root@node${array[i]}:/root/.ssh/authorized_keys 
done
#若删除文件authorized_keys,则免密设置失效。

注意事项:

1、ssh-keygen命令默认实现rsa加密,与命令“ssh-keygen -t rsa”功能相同。

2、本文中使用ssh-keygen命令后出现以下3个问题时,全都直接按“Enter”键:

①Enter file in which to save the key (/root/.ssh/id_rsa):

②Enter passphrase (empty for no passphrase):

③Enter same passphrase again:

其中,①是秘钥保存的路径;

②是密码,本文为免密设置,直接按“Enter”键;也可以自行设置密码。

3、ssh-copy-id命令可以将authorized_keys文件发给自己(如脚本中的ssh-copy-id root@node101),也可以发送至其他主机(例如:ssh-copy-id root@node102)。

【本文在代码第12行后,如果使用命令“ssh node${array[i]} ssh-copy-id root@node101”,会报错“Permission denied”,原因可能是 默认生成的 .ssh目录权限为700,在node101上执行该命令 访问node${array[i]}的.ssh目录下的内容 就会导致权限不足。

解决办法(未验证其可行性):在第12行命令后先添加命令“ssh node${array[i]} chmod 777 /root/.ssh”。

由于以上原因,在该脚本使用了scp及cat命令(第14、16行) 实现将所有的公钥存放到node101的authorized_keys文件中。】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值