关于SSH服务解读,


目录
  • 一、SSH基础
    • 1.介绍
    • 2.优点
    • 3.作用
    • 4.SSH 软件
    • 5.openSSH 服务器配置文件
  • 二、ssh原理
    • 1.公钥传输原理
    • 2.加密通讯原理
  • 三、ssh的应用
    • 1.ssh配置文件信息
    • 2.ssh的基本用法
    • 3. 黑白名单
  • 三. 使用密钥对免交互验证登录 
    • 总结

      一、SSH基础

      1.介绍

      SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。

      SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。

      对数据进行压缩,加快传输速度。

      • SSH是一个应用层协议
      • 实现Linux的远程加密连接
      • 适用于Linux服务器远程管理

      SSH客户端<--------------网络---------------->SSH服务端

      2.优点

      • 数据传输是加密的,可以防止信息泄漏
      • 数据传输是压缩的,可以提高传输速度

      3.作用

      SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。

      ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

      SSH服务端口22/tcp

      4.SSH 软件

      • SSH 客户端:finalshell  xshell  putty   secureCRT   MobaXterm
      • SSH 服务端:openSSH (Centos 7 默认安装)

      5.openSSH 服务器配置文件

      • 服务名称:sshd
      • 服务端主程序:/usr/sbin/sshd  
      • 服务端配置文件:/etc/ssh/sshd_config 
      • 客户端配置文件:/etc/ssh/ssh_config

      openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。

      执行“systemctl start sshd”命令即可启动sshd服务。默认端口使用的22端口。

      ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

      作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。

      远程管理linux系统基本上都要使用到ssh,原因很简单:telnet、FTP等传输方式是?以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。 

      二、ssh原理

      登陆:

      1.公钥传输原理

      • 客户端发起链接请求
      • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
      • 客户端生成密钥对
      • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
      • 客户端发送加密值到服务端,服务端用私钥解密,得到Res
      • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
      • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

      2.加密通讯原理

      2.1 对称加密:

      概念:

      采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。

      常用算法:

      对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

      特点:

      1、加密方和解密方使用同一个密钥;

      2、加密解密的速度比较快,适合数据比较长时的使用;

      3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

      优缺点:

      优点:算法公开、计算量小、加密速度快、加密效率高

      缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

      2.2 非对称加密:

      概念:

      非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

      常用算法:

      RSA:目前使用最广泛的算法

      DSA:数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快

      ECC(椭圆曲线加密算法)

      ECDSA:椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

      原理:

      首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下。

      优缺点:

      相比于对称加密技术,非对称加密技术安全性更好,但性能更慢

      三、ssh的应用

      1.ssh配置文件信息

      在linux中实现ssh,是通过opsnSSH的sshd服务提供的

      1.1.ssh服务端的配置文件:

      /etc/ssh/sshd_config

      1.2 存放ssh客户端的配置文件

      /etc/ssh/ssh_config

      2.ssh的基本用法

      选项:

      • -l 选项,指定登录名称。
      • -p 选项,指定登录端口
      • -t

      2.1.直接连接ip地址:

      格式:ssh   ip地址

      第一次连接时会询问你是否要验证公钥,同意之后,下次登录就会自动获取服务端的公钥

      2.2.连接指定用户:

      • ssh   用户名@ip地址 
      • ssh  -l   用户名    ip地址

      2.3.连接指定端口号:

      格式:  ssh    ip地址     -p    端口号

      sshd服务的默认端口号是 22,如果不是此端口,需要 -p 来指定端口

      在  /etc/ssh/sshd_config下面修改端口号

      2.4.跳板机:

      使用跳板是为了方便和安全

      格式:   ssh   -t  ip地址   ssh   -t   ip地址     ssh   -t     ip地址   ........

      将172.16.195.3 做为中间跳板远程连接 172.16.195.4

      2.5.直接跟上命令远程操作:

      格式: ssh   ip地址    想使用的命令

      3. 黑白名单

      白名单:默认拒绝所有,只有白名单上允许的人才可以访问

      黑名单:默认允许所有,只有黑名单上的用户让你不允许访问

      (白名单优先级高,但一般不会同时使用白名单和黑名单,白名单使用会多一点)

      3.1 白名单:

      在172.16.195.3上

      在  /etc/ssh/sshd_config   里手动添加

      在空白处添加此内容

      在 172.16.195.4上连接

      3.2黑名单:

      在172.16.195.3上设置

      用172.16.195.4上的gg用户请求连接

      连接不上 

      用172.16.195.4上的root用户请求连接

      连接上了 

      3.3.更改默认端口

      打开配置文件——vim /etc/ssh/sshd_config

      3.4.禁止root用户登陆:

      打开配置文件——vim /etc/ssh/sshd_config

      在空白处添加

      在172.16.195.3上

       

      在172.16.195.4上 

      发现连接不上

      但是可以切换用户连接上 

      在pam.d/su配置文件上开启 

       切换用户也连接不上了

      3.5. ssh服务的最佳实践:

      • 建议使用非默认端口 22
      • 禁止使用protocol version 1
      • 限制可登录用户 白名单
      • 设定空闲会话超时时长
      • 利用防火墙设置ssh访问策略
      • 仅监听特定的IP地址 公网 内网
      • 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
      • 使用基于密钥的认证
      • 禁止使用空密码
      • 禁止root用户直接登录
      • 限制ssh的访问频度和并发在线数
      • 经常分析日志 分离
      • 如果有一天登录ssh变得非常非常慢,请禁用反向解析

      三. 使用密钥对免交互验证登录 

      原理:

      • 用户/密码
      • 基于秘钥

      用户/密码:

      • 1.生成公钥和私钥
      • 2.将公钥导给对面

      • 客户端发起ssh请求,服务器会把自己的公钥发送给用户
      • 用户会根据服务器发来的公钥对密码进行加密
      • 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

      基于密钥的登录方式

      • 首先在客户端生成一对密钥(ssh-keygen)
      • 并将客户端的公钥ssh-copy-id 拷贝到服务端
      • 当客户端再次发送一个连接请求,包括ip、用户名
      • 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
      • 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
      • 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
      • 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

      1.创建密钥

      2.将密钥传送给服务端

      3.在服务端查看是否收到密钥文件

      如果有,会生成一个 authorized_keys 文件

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。

      您可能感兴趣的文章:
      • Dockerfile为镜像添加SSH服务的实现步骤
      • 如何设置5台SSH互免的虚拟机服务器配置
      • 使用SSH远程连接Ubuntu服务器系统的方法

      相关内容