Linux之基于SSH的key认证实验

一、加快ssh服务访问速度

 修改/etc/ssh/sshd_config文件

GSSAPIAuthentication yes–>no             关闭api验证

#UseDNS  yes|no–>UseDNS no             去掉注释,启用DNS

重启sshd服务

CentOS6:

service  sshd   restart 

CentOS7:

systemctl restart sshd

二、实验:实现基于key登录认证

  1. 在客户端生成一对钥匙:

    ssh-keygen -t rsa

    交互式输入:

    默认路径

    输入口令

  2. 发送公钥给服务器端:

    ssh-copy-id   -i  /root/.ssh/id_rsa  [email protected]
    

    再次连接:

    ssh [email protected]        不提示输入密码
    
    ssh [email protected]  ‘id’      远程执行命令
    
  3. 利用基于key不需输入口令登录的特性,我们可小批量的执行一些任务:

    先把需要执行任务的服务器IP放入一个文件中:

    cat ip.txt
    
    192.168.30.7
    
    192.168.30.12
    
    192.168.30.17
    
    ……
    
  4. 编写一个脚本显示主机名:

    vim hostname.sh
    
    hostname
    
    chmod +x hostname.sh
    
  5. 执行命令:

    批量传送脚本
        for ip in `cat ip.txt`;do scp -p f1.sh $ip:/data/;done
    
    批量执行脚本显示主机名
        for ip in `cat ip.txt`;do ssh $ip “/data/f1.sh”;done
    

可结合expect实现批量密钥登录方式

三、实验:实现多台机器间互相基于key登录认证

思路:多台机器公用一套钥匙

  1. 在A机器上生成一对密钥,并对自己执行ssh-copy-id命令

    ssh-keygen
    
    ssh-copy-id A
    
  2. 将本机.ssh目录发送给其他所有机器

    scp -rp /root/.ssh  B:/root/
    
    scp -rp /root/.ssh  C:/root/
    

即可实现多台机器间互相基于key登录

当然,如果我们觉得私钥不加密不安全,我们还可以给私钥重新加密

重设私钥口令:

ssh-keygen -p

私钥加密后,每次连接都要求输入私钥口令,我们可采取代理托管方式省去输入口令这一环节:

注:代理托管重启后失效,需重新设置

启用代理托管口令

ssh-agent bash

ssh-add

四、实验:实现100台机器基于key登录验证

  1. 准备ip列表

    先把需要执行任务的服务器IP放入一个文件中:

    cat ip.txt
    
    192.168.30.x
    
    192.168.30.xx
    
    192.168.30.xxx
    
    ……
    
  2. 编写将公钥推送到其他100台机器上的脚本

    
    #!/bin/bash
    
    
    
    #安装expect包
    
    rpm -q expect &> /dev/null || yum install expect -y
    
    
    #生成一对密钥,如需加密密钥可在-P之后写上密码
    
    ssh-keygen -P “” -f “/root/.ssh/id_rsa”
    
    
    #服务器登录密码
    
    password=centos
    
    while read ipaddr;do
    
    expect <<EOF
    
    set timeout 10
    
    spawn ssh-copy-id $ipaddr
    
    expect {
    
    “yes/no” { send “yes\n”;exp_continue }
    “password” { send “$password\n” }
    }
    
    expect eof
    
    EOF
    
    done < ip.txt
  3. 运行脚本,将公钥推送到其他100台机器上

  4. 实现基于密钥验证无密码登录

猜你喜欢

转载自blog.csdn.net/lv8549510/article/details/80778156