利用OpenSSH实现基于秘钥的认证


SSH协议介绍:

    SSH是Secure Shell的缩写,意思是安全的shell 

        目前版本有 ssh v1和ssh  v2:在目前工作中大多都使用ssh v2版,ssh  v1已经不安全,尽量不使用

             ssh v1:基于CRC-----32做MAC(Message Authentication Code),不安全

             ssh v2:基于双方主机的协商最安全的MAC的方式;基于DH算法做秘钥交换;基于RSA或DSA实现身份认证;客户端通过检查服务器端的主机秘钥来判断是否能够将继续通信

                  有两种认证方式:

                        基于口令

                        基于RSA或DSA秘钥


软件:openssh

       openssh是ssh协议的一种开源实现,使用openssl实现基于RSA或DSA的秘钥认证



一、环境准备

        1、两台linux主机,分别是192.168.10.203和192.168.10.120, 使192.168.10.203做为服务器端,192.168.10.120做为客户端

        2、安装软件

              在服务器端安装ssh服务端和ssh客户端

               wKiom1VM1r-y26fYAAA2fQNONxc972.jpg

             在客户端安装ssh客户端

               wKioL1VM2LajdE2vAAAi6j-ffs0439.jpg

       3、安装后生成的文件:

             服务端:

              wKioL1VM2qvx-FDjAAJ2uB67DTY473.jpg

            客户端:

               wKiom1VM2ZyAT5FIAAHwJtBM85M140.jpg  

                   

二、配置rsa秘钥(在客户端配置)

       1、生成rs秘钥

             方法一:

              wKioL1VM3BKg7UqeAAITjcfeJlo520.jpg

           方法二:不需要交互,方便在编写shell时使用

                wKioL1VM3J_i8BeXAAGv2jNn31Y916.jpg

           命令解释

                  # ssh-keygen -t rsa -P '' -f  ~/.ssh/id_rsa

                  ssh-kegen:  openssh秘钥生成工具

                  -t   rsa| dsa: 指定秘钥类型

                  -f  /path/to/somfie:  指定生成秘钥的存储位置

    

    2、将客户端的公钥传给服务器端

          wKiom1VM3O7A-Ew_AAEFqHb6w34438.jpg

   3、在服务器端查看客户端传递过来的公钥信息

wKioL1VM3rnzbAheAAIKgzQqjN0523.jpg

 


   4、登录验证;此时只需要使用用户而不需要输入密码即可登录服务器端

       wKioL1VM313CZttwAABwSxu90CY707.jpg


三、使用小技巧

    利用openssh黑白名单限制用户登录

     1、条件两个用户centos和ferdora

         wKioL1VM4QLi3I6lAAHun8eDdPo661.jpg

   2、测试确保两用户都可以正常登录服务器

             wKioL1VM4ZSD3fB2AAEQGmVT1aU416.jpg

   3、修改服务器配置文件:/etc/ssh/sshd_config,在最后添加一下信息

            AllowUsers   root   centos

    4、重启sshd服务进行验证:

       服务器端重启sshd服务

       wKioL1VM4vLjscURAACAAYYlIHE775.jpg

       

       客户端连接测试:

            wKiom1VM4qeA1wKwAAHwVbwgM20311.jpg