当前位置: 首页 > news >正文

网络服务之SSH协议

一.SSH基础

1.1 什么是ssh

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

1.2 ssh优点

优点:

  • 数据传输是加密的,可以防止信息泄漏

  • 数据传输是压缩的,可以提高传输速度

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

1.3 ssh原理

1.公钥传输原理

  • 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.密码认证:通过用户名密码登录

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

1.5 ssh工作方式 

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.修改默认端口

 2.禁止root用户登录

  将其中修改为yes: PermitRootLogin yes 
   #默认 ubuntu不允许root远程ssh登录、每次需要从普通用户切换到root用户

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

  LoginGraceTime  2m

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

 MaxSessions  10         
 #同一个连接最大会话 

5.提高ssh速度(重点!!)

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

6.白名单黑名单列表

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

黑名单:默认允许所有,加进来才不可以

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.免确认交互问题(客户端)

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

2.远程免密登录

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

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

3.结果  注意:此结果是服务器31生成密钥对后将公钥发送给客户机11后的结果,其过程省略

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

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

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

1.将旧服务器关机模拟 

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

3. 在客户机测试远程连接服务器

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

4.删除存放曾经连过服务器公钥文件中此服务器 :

5.测试远程连接 

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

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

1.客户端连接

2.服务端自己连接自己

3.总结

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

相关文章:

  • 【计算机视觉】手势识别
  • DeepSeek R1大语言模型实战工作坊02:deepseek发展演进
  • linux nginx 安装后,发现SSL模块未安装,如何处理?
  • AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台
  • 基于物联网技术的电动车防盗系统设计(论文+源码)
  • 【星云 Orbit • STM32F4】07. 用判断数据尾来接收据的串口通用程序框架
  • linux服务器根据内核架构下载各种软件依赖插件(例子:Anolis服务器ARM64架构内核Nginx依赖插件下载)
  • golang反射
  • cenos7网络安全检查
  • 机器学习——回归树
  • 前端基础之动画效果
  • 信贷风控系统架构设计
  • opencompass框架测试Deepseek使用教程
  • 【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
  • js操作字符串的常用方法
  • 【万字长文】基于大模型的数据合成(增强)及标注
  • Pytorch的一小步,昇腾芯片的一大步
  • 【Elasticsearch】reindex
  • Pythonweb开发框架—Flask工程创建和@app.route使用详解
  • 33.C++二叉树进阶1(二叉搜索树两种模型及其应用)
  • 别人盗用我的网站备案号怎么办/广州网络seo公司
  • ps做的网站模板/百度做广告费用
  • 学完js了可以做哪些网站/国外免费域名申请
  • 找工程分包网站/深圳网站建设的公司
  • 镇江网站建设网站/卖网站链接
  • 馆陶网站建设费用/搜索引擎广告