目录

网络服务之SSH协议

网络服务之SSH协议

一.SSH基础

1.1 什么是ssh

SSH(Secure Shell)协议是一种用于字符界面 远程登录数据加密 传输的协议。

1.2 ssh优点

优点:

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

注意:telnet对比ssh    1.没有压缩功能 2.明文传输数据不安全

1.3 ssh原理

1.公钥传输原理

https://i-blog.csdnimg.cn/direct/6e4396f487a34f8985f03c91befdff73.png

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

2.ssh加密传输原理

1.对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密

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

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

1.4 ssh验证方式

密码认证 :通过 用户名密码登录

密钥认证 :使用密钥( 公钥和私钥 )进行 无密码登录

1.5 ssh工作方式

https://i-blog.csdnimg.cn/direct/5e1da4efc7a84aa7b3623349e23579ea.png

1.6 ssh登录方式

第一种方法:ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port:端口

第二种方法:ssh  -l [远程主机用户名] [远程服务器主机名或IP地址] -p port:端口
 
注意: -p :当服务端的端口非默认时,需要使用-p 指定端口号进行登录
       

注意: -t 选项的作用就是强制 SSH 分配一个伪终端给远程会话,适用于跳板机连接。

二.SSH客户端和服务端

2.1 常用文件

OpenSSH是以 SSH协议开发的软件提供sshd服务

常用配置文件有两个/etc/ssh/ssh_config /etc/sshd_config

ssh_config为客户端配置文件设置与客户端相关的应用可通过此文件实现

sshd_config为服务器端配置文件设置与服务端相关的应用可通过此文件实现

服务名称sshd

服务端主程序/usr/sbin/sshd  

服务端配置文件/etc/ssh/sshd_config 

客户端配置文件/etc/ssh/ssh_config

注意:ssh服务端主要包括两个服务功能 ssh远程连接sftp服务 (文件传输功能)

2.2 服务端常见配置项

·1.修改默认端口 https://i-blog.csdnimg.cn/direct/02c53889a26b4e628fa8c2f8394e133f.png https://i-blog.csdnimg.cn/direct/036853980eee4a44a19e811ef3af2704.png

2.禁止root用户登录

将其中修改为yes: **PermitRootLogin yes

#默认 ubuntu不允许root远程ssh登录、每次需要从普通用户切换到root用户**

3.设定用户登录失败,服务器切断连接前等待的时间,单位为秒

LoginGraceTime  2m

4.限定同一连接打开的窗口数

MaxSessions  10

#同一个连接最大会话

提高ssh速度(重点!!) https://i-blog.csdnimg.cn/direct/c491238685c64508a52ee984ec6d18d1.png

注意:无论内网还是外网都要改为no ,禁用反向解析

6.白名单黑名单列表

白名单:默认拒绝所有,只有加进来,才可以

黑名单:默认允许所有,加进来才不可以 https://i-blog.csdnimg.cn/direct/4c67e45a8ba548b29ea837aca6ad3307.png

https://i-blog.csdnimg.cn/direct/209737f2384c4e96b45542c5ea514de2.png

2.3ssh 服务的最佳实践

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

三.基础操作

1.免确认交互问题(客户端)

解决客户端免确认交互直接输入密码登录问题

https://i-blog.csdnimg.cn/direct/f2d9b1e943da4c8e83f21aab8c21a27a.png

https://i-blog.csdnimg.cn/direct/4b9c6262ff424d3d8873c368fd0e3e28.png

https://i-blog.csdnimg.cn/direct/ded3059c8bac46caba0eefa18360c276.png

2.远程免密登录

1.在客户机生成密钥对: ssh-keygen

https://i-blog.csdnimg.cn/direct/e43446b320ab4b6c91911447f27fa527.png

2.在客户机存放公钥的文件夹中发送自己的公钥给服务器 : ssh-copy-id  -i id_ecdsa.pub IP地址

https://i-blog.csdnimg.cn/direct/877b2c8600854eafa5dfa237f2d4e54f.png https://i-blog.csdnimg.cn/direct/91bc45e3976b4126a3b39c14d94a7c4a.png 3.结果 https://i-blog.csdnimg.cn/direct/bb205cc808b74b15b6befa7fa8ad39de.png 注意:此结果是服务器31生成密钥对后将公钥发送给客户机11后的结果,其过程省略

3.模拟服务器新旧更换(重点!)

实验准备:一台客户端、一台旧服务器(ip不变)、一台新服务器 (ip不变)

实验目的:模拟在生产环境中如果旧的服务器设备更换新的服务器,ip还是原先旧的ip的情况下,产生的安全问题,导致远程连接不上服务器。

1.将旧服务器关机模拟

https://i-blog.csdnimg.cn/direct/52160d6fe1ab490585b44f3cc16397a4.png

2.在新服务器上添加旧服务器ip测试

https://i-blog.csdnimg.cn/direct/cfc7859d6e6d454180e9e21797e7ac15.png

  1. 在客户机测试远程连接服务器 https://i-blog.csdnimg.cn/direct/8adf4fa4953b47b287a57279d3971ec2.png

注意: 为什么会出现这种问题,因为密钥不匹配 ;解决方法:找到存放曾经连过主机公钥的文件,删除曾经连过此服务器对应的公钥就可以解决。

4.删除存放曾经连过服务器公钥文件中此服务器 : https://i-blog.csdnimg.cn/direct/d01a87ad9b0441d5bd6c67e9c139ff80.png

https://i-blog.csdnimg.cn/direct/bd28806e8a414345a5cd7bed26984b91.png

5.测试远程连接

https://i-blog.csdnimg.cn/direct/d7c4ef956c654f53b9491f8929f00f49.png

注意:在生产环境中硬盘更换、网卡更换、内存更换等设备更换都会导致远程登录不上。

4.如何确认登录服务器正确

1.客户端连接 https://i-blog.csdnimg.cn/direct/536c013304ac47389b29a72530257863.png

2.服务端自己连接自己 https://i-blog.csdnimg.cn/direct/7b786c59a25243aeaf723d93a087d31f.png

3.总结

由1、2两张图可以看到公钥是一样的,由此可以判断对方就是要连的服务器;在能知道对面服务器密码的情况下,此方法是可行