利用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客户端

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

             在客户端安装ssh客户端

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

       3、安装后生成的文件:

             服务端:

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

            客户端:

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

                   

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

       1、生成rs秘钥

             方法一:

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

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

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

           命令解释

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

                  ssh-kegen:  openssh秘钥生成工具

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

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

    

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

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

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

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

 


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

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


三、使用小技巧

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

     1、条件两个用户centos和ferdora

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

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

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

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

            AllowUsers   root   centos

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

       服务器端重启sshd服务

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

       

       客户端连接测试:

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


    

 四、openssh客户端组件的使用方法

        安装openssh-clients,openssh-server软件包后,会产生scp、sftp、以及ssh客户端组件,这里只介绍scp、sftp客户端组件


      1、scp客户端组件:

                    利用ssh协议在主机之间实现安全文件传输    

          命令格式:

               scp  [options]  SRC  ........   DEST/                

        scp有两种格式:

             PULL:   scp    [options]      [USER@]HOST:/path/from/somefile         /path/to/somewhere

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

             PUSH:  scp    [opitons]       /path/form/somefile      [USER@]HOST:/path/to/somewhere

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

            options常用选项有以下几种:

                   -r:  递归复制,复制目录时使用

                   -p:保持源文件的元数据信息;主要是mode和timestamp

                   -q:静默模式

                   -P  PORT: 指定远程服务器的端口

                         

      2、sftp客户端组件:

             sftp功能:基于ssh协议实现的ftp客户端程序,sshd(服务器端)自带sftp程序

            使用方法:

                sftp   [USER@]HOST

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