ssh:Secure  SHell

      C/S:22/tcp,安全地址登录

           Server:OpenSSH(sshd)

           Client:OpenSSH(ssh,scp),

                 Windows工具 :xshell,putty,securecrt ,sshsecure shell client

sshprotocol version

      V1:不安全;

      V2

主机认证:需要用到主机认证密钥;由服务器维护和提供;

用户登录:

      用户认证:

           基于口令认证;

           基于密钥认证:用户提供一对儿密钥,私钥保留在客户端,公钥保留于远程服务器端的用户家目录下;

OpenSSH

      sshd:配置文件 /etc/ssh/sshd_config

      844a3e40ad1e9c5d4022e41ae4cbb7d4.png-wh_

      ssh:配置文件 /etc/ssh/ssh_config

      1f597ff2f73ed8c10e9bdeda66fa434e.png-wh_

      客户端程序:

           ssh [options] [user@]host  [COMMAND]

           ssh [-l  user] [options] host  [COMMAND]

          

省略用户名:

   使用本地用户名作为远程登录的用户名;

常用选项:

   -l  user:以指定的用户登录远程主机;

   -p port:用于指明远程服务器的端口;

   -X:支持X11转发;

         X:协议;x-Windows,C/S

         X11转发的作用:在本地显示远程主机上的图形窗口;

              前提:本地是X图形界面,或者提供了x service;

   -o StrictHostKeyChecking=no

接收的所有认可的服务器列表:

   ~/.ssh/known_hosts

   31eb5219719e6cb23c971baf983c8693.png-wh_

ssh远程连接服务器时的配置选项,定义在/etc/ssh/ssh_config配置文件中;

   HOST pattern

         OPTION1 VALUE

         OPTION2 VALUE

         …

ssh支持的用户认证方式:

   基于口令认证;

   基于密钥认证:

1)    在本地主机生成一对密钥;

ssh-keygen  [-q] [-b bits]  [-t type] [-foutput_key_file]  [-P passphrase]

  -t {rsa|ecdsa|dsa}:公钥加密算法类型;

  -b bits:指明密钥长度;

  -P passphrase:私钥加密密码;

  -f output_keyfile:生成密钥的保存位置;

6a7a14e0436002bd278146bb089f04c7.png-wh_

2)    在本地主机上,将公钥复制到要登录的远程主机的某用户的家目录下的特定文件中(~/.ssh/authorized_keys)

6e037b32e30141f5b78b9f8f26515209.png-wh_

查看claude家目录的文件

4bd0cda7557eac8d7a8a581d98594f30.png-wh_

3)    测试

scp命令:基于ssh连接完成复制

         scp[options] SRC…  DEST/

         scp[option]    SRC   DEST

         存在两种使用情形:

              PULL:scp [options]  [user@]host:PATH/TO/SOMEFILE     /PATH/TO/SOMEFILE

              4126213a7c2d859234445b8d1c05f595.png-wh_

              PUSH:  scp [options]  /PATH/TO/SOMEFILE   [user@]host:/PATH/TO/SOMEFILE

              b2941080ebfd2b55fdac4dc8bdf9d501.png-wh_

              常用选项:

                    -r:递归复制;

                    -p:保持原文件的权限信息;

                    -q:静默模式;

                    -PPORT:指明远程主机ssh协议监听的端口;

sftp命令:

         ftp:file transferprotocol,明文;

         安全的文件传输机制;

              ftps:ftp over ssl

              sftp:ftp over ssh

         sftp

              C/S架构

S:由sshd服务进程管理,是sshd的一个子系统,在centos系统上的openssh上,默认为启动状态:/usr/libexec/openssh/sftp-server

  C:即sftp;

 

连接至远程主机:sftp  user@host

      Sftp>help

                 a1aedc7e36a23ecc55f6dcd94d6e3633.png-wh_

      sshd(服务端)

           配置文件:/etc/ssh/sshd_config(以下为部分配置文件)

           af4cfbc77e0f6dd4c31469006746ed78.png-wh_

                 格式:配置指令   值

                       常用指令:

                            Port     22

                            ListenAddress 0.0.0.0

                            Protocol    2

                            PermitRootLogin  yes

                            UseDNS   no

                 手册页:

                      man     sshd_config

                      man     sshd

                     

                      man ssh_config

                      man ssh

                 限制可登录的用户(配置文件):

                      AllowUsers  user1 user2  user3 …

                      AllowGroups   grp1 grp2 …

 

                      DenyUsers  user1 user2 …

                      DenyGroups  grp1 grp2 …

           Centos6:

                 服务脚本:/etc/rc.d/init.d/sshd

           Centos7:

                 System unitfile:/usr/lib/system/system/sshd.servcie

      Ssh服务的最佳实践:

1.     不要使用默认端口;

2.     禁止使用protocol version 1;

3.     限制可登录用户;

4.     设定空闲会话超时时长;

5.     利用防火墙设置ssh访问策略;

6.     仅监听特定的ip地址;

7.     基于口令认证时,使用强密码策略;

#tr –dc  A-Za-z0-9_ <  /dev/urandom  | head –c 30  | xargs

8.     使用基于密钥的认证;

9.     禁止使用空密码;

10.禁止root用户直接登录;

11.限制ssh的访问频度和并发在线数;

12.做好日志,经常分析;

Ssh协议的另一个实现;dropbear

      轻量化的实现方案,多用于嵌入式环境中;

      常用工具:

           dbclient :ssh协议客户端程序

dbclient [options]  [user@]host[/port][,[user@]host/port],…][command]

           dropbearkey:主机密钥生成工具

                 dropbearkey –t <type>-f<filename> [-s bits]

                      /etc/dropbear/

      服务端程序:

           dropbear

                 -p [IP:]PORT

                 -F:前台;

                 -E:将日志发往错误输出;