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

SecureShellProtocol(ssh)

目录

1.0 简介

基础理论名词

诠释加密算法

2.0 交互工作流程

sshv1与sshv2

sshv1

交互工作过程

sshv1存在问题

sshv2

sshv2的安全性

v2交互阶段

3.0 ssh小实验

文件解读

客户端免密登录服务器示例

ssh远程小实验


1.0 简介

🔭ssh基本信息

  1. ssh全称安全外壳协议(SecureShellProtocol)

  2. ssh是一个协议,而openssh是对ssh的一个具体的实现,它是真实用于远程连接的软件

  3. ssh端口号:22

基础理论名词

  1. 单向加密算法:MD5、 SHA-1、SHA-256、SHA-3

  2. 对称秘钥(对称加密算法):DES、3DES、AES、Blowfish、IDEA等

  3. 非对称秘钥(非对称加密算法):RSA、ECC、Diffie-Hellman密钥交换(D-H算法)等

  4. D-H算法作用:Diffie-Hellman (DH) 算法是一种密钥交换协议,允许两个以前不共享秘密密钥的参与者在不安全的信道上协商一个安全密钥(会话秘钥)

  5. 公钥(public key):用来加密的,所有人都可以获取公钥来加密数据

  6. 私钥(private key):用来解密的,只有自己拥有

诠释加密算法

  1. 单向加密算法:也称为哈希算法,用于提取文件特征码;目的:不被篡改。

    1. 缺点:不可逆。

    2. 优点:保证数据的完整性。

  2. 对称加密算法:加密和解密使用同一个秘钥。

    1. 缺点:需要妥善保管秘钥。

    2. 优点:加密速度快。

  3. 非对称加密算法:公钥可以公开,私钥保密,无需安全通道传输密钥

    1. 缺点:速度慢

    2. 优点:安全性高

2.0 交互工作流程

sshv1与sshv2

sshv1

交互工作过程

客户端请求连接,服务器回复Serverkey(服务端公钥)接受请求,客户端生成共享秘钥请求建立会话,服务端回包建立会话

sshv1存在问题

由于sshv1的连接过程中,当服务器端接受用户端的Private key后,就不会对此次连接中的Key pair进行检验,黑客可以针对Key pair对插入恶意代码,服务端可能会接受到恶意程序,进而系统被黑掉,由此引出了sshv2

sshv2

sshv2的安全性

sshv2多加了一个确认连接正确性的Diffie-Hellman(DH算法)机制,再每此传输数据中,服务端都会以该机制检查数据的来源是否正确。

v2交互阶段

阶段过程说明
阶段一版本号协商阶段SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本
阶段二密钥和算法协商阶段SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法
阶段三认证阶段SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证
阶段四会话请求阶段认证通过后,客户端向服务器端发送会话请求
阶段五交互会话阶段会话请求通过后,服务器端和客户端进行信息的交互

🔭文字简述

  • 阶段一、二:相互确认使用的协商出版本号、秘钥、算法。

  • 阶段三:此阶段有两种认证方法(密码认证秘钥认证);使用秘钥和算法传输用户认证信息,基于DH算法各自生成会话秘钥,认证通过后进入阶段4。

  • 阶段4:服务端告诉客户端:可以开始会话。

  • 阶段5:使用会话秘钥开始会话。

3.0 ssh小实验

文件解读

 [root@Server ~]# ll /etc/ssh/total 600-rw-r--r--. 1 root root     578094 Jan  5  2024 moduli-rw-r--r--. 1 root root       1921 Jan  5  2024 ssh_configdrwxr-xr-x. 2 root root         28 Oct 25 13:15 ssh_config.d-rw-------. 1 root root       3667 Jan  5  2024 sshd_configdrwx------. 2 root root         59 Oct 25 13:18 sshd_config.d-rw-r-----. 1 root ssh_keys    492 Oct 25 13:22 ssh_host_ecdsa_key-rw-r--r--. 1 root root        162 Oct 25 13:22 ssh_host_ecdsa_key.pub-rw-r-----. 1 root ssh_keys    387 Oct 25 13:22 ssh_host_ed25519_key-rw-r--r--. 1 root root         82 Oct 25 13:22 ssh_host_ed25519_key.pub-rw-r-----. 1 root ssh_keys   2578 Oct 25 13:22 ssh_host_rsa_key-rw-r--r--. 1 root root        554 Oct 25 13:22 ssh_host_rsa_key.pub

🔭文件解读:

/etc/ssh/sshd_config ===> 带d的是服务器端的主配置文件,不带d的:/etc/ssh/ssh_config的是用户端主配置文件;

sshd_config.d、ssh_config.d分别存放着它们的子配置文件:sshd_config.d/01-permitrootlogin.conf,子配置文件中的参数优先级高于主配置文件,所以一般修改子配置文件,不动主配置文件。

第一次远程登录到目的主机时,本机系统会自动创建known_hosts、known_hosts.old文件

要是想要密钥登录则在服务端(要远程的主机)的~/.ssh/下要有authorized_keys文件,可以手动创建,也可以使用 "ssh-copy-id 要远程的主机名" 命令创建,可以自动生成authorized_keys文件(但是之前我windows端对Linux端用不了"ssh-copy-id 要远程的主机名" 命令,要手动创建)

 [root@Server ~]# vim /etc/ssh/sshd_config# 以下的是主机私钥,不是主机公钥,主机公钥是派生出来的26 #HostKey /etc/ssh/ssh_host_rsa_key      采用rsa非对称加密算法27 #HostKey /etc/ssh/ssh_host_ecdsa_key    采用ecdsa对称加密算法28 #HostKey /etc/ssh/ssh_host_ed25519_key  采用ed25519非对称加密算法,一般使用优先级是最高的,它们三没有什么安全性的差异,只不过一个比一个新,一个比一个效率高一点,经此而已。

客户端免密登录服务器示例

 # 服务端要创建authorized_keys文件来保存客户端的公钥,必须是这个文件名,少一个字母都不得,不然不成功[root@Server ~]# tree .ssh/.ssh/[root@Server ~]# touch .ssh/authorized_keys[root@Server ~]# tree .ssh/.ssh/└── authorized_keys​# 客户端生成密钥对,再发送到服务端[root@Client ~]# tree .ssh/.ssh/[root@Client ~]# ssh-keygen -t rsa----# 回车[root@Client ~]# tree .ssh/.ssh/├── id_rsa└── id_rsa.pub[root@Client ~]# ssh root@192.168.126.100Are you sure you want to continue connecting (yes/no/[fingerprint])? yes# 密码登录,登录后系统会自动创建known_hosts、known_hosts.old这两个文件[root@Client ~]# tree .ssh/.ssh/├── id_rsa├── id_rsa.pub├── known_hosts     # 里面保存的是第一次登录到服务端时它要客户端保存的密钥指纹└── known_hosts.old     # 里面记录的是历史信息,# 使用 "ssh-keygen -R 远程的主机名" 命令后会删除掉known_hosts中有关此主机名的信息,会在known_hosts.old中看到之前删除的主机名信息[root@Client ~]# ssh-keygen -R 192.168.126.100# Host 192.168.126.100 found: line 1# Host 192.168.126.100 found: line 2# Host 192.168.126.100 found: line 3/root/.ssh/known_hosts updated.Original contents retained as /root/.ssh/known_hosts.old# 因为known_hosts里面保存的是第一次登录到服务端时它要客户端保存的密钥指纹,所以要想完成密钥登入才必须执行一次密码登录来让系统生成执行known_hosts、known_hosts.old文件# 用 "ssh-copy-id 远程的账户名@远程的主机名" 也可以很明显的看出来要密码登录一次,之后再登录时就可以免密登录了# 就算你手动创建新的known_hosts、known_hosts.old文件,再手动复制公钥到要远程的服务端的authorized_keys中,也还是要密码登录一次记录指纹才可以实现远程登录

ssh远程小实验

 # 1.更改服务端口号# 2.禁止root用户密码用户(值得注意的是子配置文件优先级高于主配置文件,改主配置文件没用,安装系统时勾选的允许root密码登录就写在这个子配置文件中,建议直接改子配置文件/etc/ssh/sshd_config.d/01-permitrootlogin.conf)# 3.白名单(AllowUsers zhangsan--->只有zhangsan可以登录)# 4.密钥登录# 5.客户端普通用户连接服务端普通用户# 6.Windows密钥登录Linux# 写了一遍都太简单了,不全记录了,记录一些注意实现吧

注意!

 #注意:客户端生成ecdsa秘钥(当/root/.ssh/目录下有多个秘钥对的时候,需要指定):[root@client ~]# ssh-keygen   -q -t ecdsa   -P ''  -f  /root/.ssh/ecdsa_key[root@client ~]# ssh-copy-id   -i /root/.ssh/ecdsa_key.pub    redhat@192.168.5.137#如果有多个密钥对,那么远程连接的时候需要指定使用的私钥[root@client ~]# ssh redhat@192.168.5.137  -i  /root/.ssh/ecdsa_key
http://www.dtcms.com/a/564460.html

相关文章:

  • HAproxy负载均衡详细介绍
  • Rust编程学习 - 如何快速构建一个单线程 web server
  • 1、PCB导入Siwave并设置叠层数据
  • 网站做生鲜线下推广建议舆情通
  • 国产电脑可以装windows吗_国产电脑安装windows要求及方法
  • Linux 基本指令入门:从基础操作到实战应用
  • 专门做任务的网站吗查看网站流量
  • 建设一个招聘网站大概多少费用wordpress主题应该怎么添加
  • flink 核心
  • 《LLMmap: Fingerprinting for Large Language Models》论文阅读
  • 节点小宝4.0版本功能升级预告:简化远程操作,优化用户体验
  • 基于卷积神经网络的作物病害识别系统(论文+源码)
  • Vue预览Excel文件的完整指南:从零开始实现
  • 黄金网站下载免费wordpress 邮箱发布
  • Min浏览器项目启动与打包
  • AWS云计算入门指南:从零到一,详解核心服务与免费套餐
  • 1千万人网站维护成本p2p网站功能模块
  • 网站做app有什么意义网站有死链怎么办
  • 网站做的不满意wordpress哪些插件
  • 邯郸企业做网站方案官方软件下载大全
  • 做民宿推广都有哪些网站运营的网站
  • 外贸网站运营工作内容西安网页设计师
  • 网站在正在建设中泰康人寿保险官方网站
  • 所有复刻手表网站百度网盘搜索引擎入口在哪
  • 网站服务器诊断深圳插画设计公司
  • 自己做qq头像的网站wordpress主题怎么改
  • 一个域名可以建设几个网站cmmi软件开发流程
  • 济宁建设公司网站软件开发过程包括
  • 初一下电脑课书做网站网站seo完整的优化方案
  • 创建网站公司好怎么做网站链接