SSH服务基于key验证

SSH  目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议。利用 SSH协议可以有效防止远程管理过程中的信息泄露问题。端口号是22。ssh客户端配置文件/etc/ssh/ssh_config。ssh服务端配置文件/etc/ssh/sshd_config。
一、SSH客户端
            允许实现对远程系统经验证地加密安全访问;当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接。
1.格式:
    ssh[[email protected]]host [COMMAND]

    ssh[-l user] host [COMMAND]
2.对ssh客户端来说有两种级别的用户登陆认证方式:

    第一种级别:基于口令的安全验证passwd
    第二种级别:基于**的安全验证 key

二、基于passwd验证原理
        1 客户端发起ssh请求,服务器会把自己的公钥发送给用户

2 用户会根据服务器发来的公钥对密码进行加密

3 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

SSH服务基于key验证  

三、基于key验证原理
            1 首先在客户端生成一对**(ssh-******
         2 并将客户端的公钥ssh-copy-id 拷贝到服务端
            3 当客户端再次发送一个连接请求,包括ip、用户名
            4服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf
            5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
            6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
            7服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
SSH服务基于key验证
四、实现基于key验证登陆

    1.#ssh-****** -t rsa   //在客户端生成一对**
    SSH服务基于key验证
    2.##ssh-copy-id   -I   id_rsa.pub [email protected] //将公钥拷贝到服务器端
    SSH服务基于key验证
实例:实现100台主机的基于key验证 //结合expect工具将公钥推送到到100台主机上,具体代码如下

首先建立文件ip.txt存放ip地址

        #!/bin/bash

        rpm -q expect&> /dev/null||yum install expect -y

        ssh-****** -P"" -f "/root/.ssh/id_rsa"

        password=centos

        whileread ipaddr;do #调用expcet脚本

        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