一、SSH协议

  1.ssh: secure shell protocol, 安全的远程登录

       默认监听在22/tcp,用以取代较早的telnet远程登录协议(监听与23/tcp,明文认证过程)C/S模式

          Client: ssh, scp, sftp

        Windows客户端:xshell, putty, securecrt, sshsecureshellclient

          Server: sshd

  2.SSH协议版本

        v1基于CRC-32做MAC,不安全;man-in-middle

        v2:双方主机协议选择安全的MAC方式

基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;

 3.ssh认证过程

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

     (2)用户登录认证

  基于口令的认证:用户名和密码认证

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

OpenSSH详解_第1张图片

 4.Linux实现软件

         OpenSSH:ssh协议的开源实现

         dropbear:另一个开源实现;

 

 

 

 

二、OpenSSH配置文件(centOS 6)

  1.[root@localhost ~]# ls -l /etc/ssh

       六个密钥实现主机认证,三对是两种不同协议版本使用,支持

OpenSSH详解_第2张图片

 2.ssh(客户端):/etc/ssh/ssh_config

       接收的所有认可的服务器列表:~/.ssh/known_hosts

HOST  patttern

OPTION1VALUE

OPTION2VALUE

...

 3.sshd(服务器端)/etc/ssh/sshd_config

     (1)格式:配置指令  值

   man   sshd_configman sshd

常用指令

#注释均为默认启用

Port  22

指明要监听的端口,默认22                                        

ListenAddress  0.0.0.0

指明要监听的地址,默认所有地址

Protocol  2

定义协议版本

KeyRegenerationInterval  1h

密钥更新时长

ServerKeyBits 1024

密钥长度

LoginGraceTime 2m

连接等待时长

PermitRootLogin  yes

允许root直接登录

StrictModes yes

严格权限

MaxAuthTries 6

最大连接尝试输入次数

MaxSessions 10

最大并发访问会话数

UseDNS

使用DNs反解地址到主机名不使用

Allowuser  USERNAME@IP

允许用户登录:指定用户从IP登录

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

AllowUsers  user1 user2  user3 ...

AllowGroups  grp1 grp2 ...

DenyUsers  user1 user2  ...

DenyGroups  grp1 grp2  ...

   (3)服务脚本

CentOS 6/etc/rc.d/init.d/sshd

CentOS 7Systemd UnitFile:/usr/lib/systemd/system/sshd.service

 

 

 

三、Openssh指令

 1.ssh 基于ssh协议完成远程连接

       格式:ssh [USERNAME@]HOST [COMMAND]

         ssh [-l USERNAME]  HOST [COMMAND]

      常用选项:

-l user:以指定的用户登录远程主机省略用户名使用本地用户名作为远程登录的用户名;

-pport:指明远程服务器的端口;

-X:支持X11转发;

-Y:支持信任的X11转发;

X:x-window协议

X11转发:在本地显示远程主机上的图形窗口;本地是X图形界面,或者提供了xservice;

-o StrictHostKeyChecking=no:自动接收保存认证密钥,不用手动输入yes确认;可在/etc/ssh/ssh_config配置

  2.scp基于ssh协议完成远程跨主机复制

scp  [options] SRC...  DEST/

scp  [options] SRC  DEST

     存在两种使用情形:

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

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

常用选项:

-r:递归复制,复制目录

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

-q:静默模式;

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

  3.sftp命令

      (1)ftp:filetransfer protocol,文件传输协议,明文;

    安全的文件传输机制:

ftps:ftp over ssl

sftp:ftp over ssh

      (1)sftp:基于ssh协议文件传输,C/S架构

   服务端:由sshd服务进程管理,是sshd的一个子系统,在centos系统上的openssh上,默认为启动状态;

                      /usr/libexec/openssh/sftp-server

   客户端:即sftp;

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

sftp>help

 

 

 

        

四、ssh用户密钥认证实现

  1.客户端主机生成一对儿密钥

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

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

-bbits:指明密钥长度;

-Ppassphrase:私钥加密密码;

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

  2.公钥传输至远程服务器对应用户的家目录(~/.ssh/authorized_keys)

  ssh-copy-id  [-i [identity_file]]  [-p port] [-o ssh_option]  [user@]hostname]

-i:指明本地公钥文件

-p:指明端口,默认22/tcp

注意:可以为不同的用书配置密钥

  3.测试

ssh  user@host

 

 

 

五、dropbearssh协议的另一个实现

 1.dropbearssh实现

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

  2.常用工具

      (1)dbclient:ssh协议客户端程序

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

      (2)dropbearkey:主机密钥生成工具

     dropbearkey  -t   -f   [-s bits]

    /etc/dropbear/

 

 

 

六、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.做好日志,经常分析; /var/log/secure