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[user@]host [COMMAND]

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

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

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

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

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

 

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

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

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

        #!/bin/bash

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

        ssh-keygen -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

猜你喜欢

转载自blog.csdn.net/weixin_41979048/article/details/80411646
今日推荐