主页

引言

在日常开发和运维中,我们时常需要通过SSH登录远程主机,进行一些运维管理操作。SSH可以在提供了一种在不安全网络 安全访问远程计算机的方式。

由于本人在日常办公中也经常用到SSH, 出于对SSH工作原理的好奇,查看了大量的中英文资料,发现大多数中文资料对SSH原理介绍不够清楚且存在诸多错误。

写作本文主要出于两个目的:

  1. 对自己查看的英文资料的汇总
  2. 希望给大家带来ssh工作原理相关的更准确的介绍

本文内容组织如下:

  • 什么是SSH
  • SSH口令认证
  • SSH公钥认证

什么是SSH

SSH,也称为Secure Shell或Secure Socket Shell,是一种网络协议,为用户(特别是系统管理员)提供了在不安全网络上安全访问计算机的方式。SSH提供了密码身份验证、公钥身份验证等多种方式,并广泛用于网络管理员远程管理系统和应用程序,使他们能够通过网络登录到另一台计算机,执行命令并在计算机之间传输文件。

SSH采用客户端-服务器模型,包含一个SSH客户端(用于显示会话的一端)和一个SSH服务端(用于运行会话的一端)。默认情况下,SSH服务器监听端口22。

SSH口令认证

我们在使用SSH客户端Client访问远程SSH服务Sever时,服务器需要对客户端进行身份认证(客户端认证),其中最常见的就是口令认证模式, 我们以登录远程服务器为例,口令认证模式流程如下:

建立安全通道

用户在客户端使用ssh root@host登录服务器时,ssh首先会建立安全通道, 建立安全通道主要有两个目的:

  • 客户端对服务端进行认证(服务端认证
  • 客户端与服务器协商会话密钥,用于后续通信加密,保证通信安全性

在客户端对服务端进行初次认证时,客户端通常会进行提示,需要由用户去人工确认访问的服务器fingerprint是否可信:

➜  ~ ssh root@my-ssh-server
The authenticity of host 'my-ssh-server (192.168.1.11)' can't be established.
ED25519 key fingerprint is SHA256:M37JXY37sYNyoE9KujJlTxXs3NO8D7pzEMQirwD6if0.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:9: 192.168.1.11
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'my-ssh-server' (ED25519) to the list of known hosts.
Welcome to OS 3 64bit
Version 3.1 20221031

用户选择YES后,服务端身份会被保存到客户端~/.ssh/known_hosts文件中,下次再登录时,需要在文件中进行匹配,无需用户在客户端再次进行确认。保存格式如下:

192.168.1.11 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGwnWKZECb3nZINMvaYiFLhmlu9wnEtomHb1U7SDQOZ7
  • 服务端ip地址
  • 服务端公钥对应的密码算法
  • 服务端公钥

口令认证流程

在客户端和服务端建立安全通道后,客户端会将用户口令发送给服务端, 服务端对用户口令进行验证,具体的验证流程与具体的操作系统有关,在linux系统中一种常见的验证流程如下:

  • /etc/shadow读取用户密码(这里的密码一般都经过加密处理,通常是哈希加盐的方式)
  • 将从客户端收到的用户明文密码进行哈希加盐处理,并与上步骤得到的进行比对,如果相同,则验证通过

SSH公钥认证

口令认证方式有以下几个缺点:

  • 安全性较差,在服务器被攻击的情况下,用户口令将会被获取
  • 每次访问服务器,需要用户输入口令,不便利

ssh公钥认证很好的解决了以上两个问题,在公钥认证模式下:

  • 用户口令不需要发送到服务器,因此即使服务器被攻击,也不会泄露敏感信息
  • 客户端认证借助了密码技术,通过数字签名-验证技术自动完成,不再需要用户频繁输入口令

由于用户登录不再使用口令,因此使用公钥认证方式进行远程服务器的登录,我们称之为免密登录。公钥认证模式流程如下:

准备阶段

公钥认证模式需要有个准备阶段(初始化阶段),该阶段主要是将客户端ssh公钥保存到服务器上,作为客户端身份的一部分, 用于:

  • 客户端身份检查
  • 用于后面流程中,对challenge进行加密(这样仅用于对应私钥的客户端可以解密得到明文的challenge)

ssh提供了ssh-copy-id命令来方便用户将客户端公钥部署到服务端:

➜  ~ ssh-copy-id root@192.168.1.11
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/hxy/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@82.157.36.61's password:

值得注意的是,该命令需要输入口令进行认证,通过后服务端会自动将客户端ssh公钥保存到~/.ssh/authorized_keys文件中。保存格式如下:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDlc...省略...aM= hxy@HXY-MB1

其中,三个字段的含义:

  • 客户端公钥对应的密码算法
  • 客户端公钥
  • 客户端对应的用户名和主机名

建立安全通道

与口令认证中的流程相同,不再赘述

公钥认证流程

在公钥认证流程中,主要包含以下几个步骤:

  • 客户端发送自己的ssh公钥
  • 服务端收到后与准备阶段事先保存的进行匹配。如果成功则生成随机字符串, 并使用客户端公钥加密发送给客户端(该随机字符串一般称为challenge-挑战码
  • 客户端解密得到challenge,并计算哈希值(这里参与计算哈希值的还有其他信息,如会话ID等,为了方便,这里统一省略)
  • 服务端计算challenge哈希值,并与从客户端收到的进行比对。如果验证通过,则表示认证成功。

需要注意的是,在第三步骤中,由于客户端收到的challenge是经过公钥加密的,通过密码学非对称加密的性质,只有对应的私钥能够解密。这里进一步保证了通信的安全性。

结论

本文详细介绍了SSH客户端认证的两种模式、以及相应的工作原理,通过本文希望读着对ssh工作原理有个简单的认识,并在工作中遇到相关问题知道如何去拍错和修复。

本文未详细介绍建立安全通道流程,主要是因为SSH协议有两个大的版本SSH1和SSH2,这两个版本在该流程处理上存在较大的差异,因此本文对该流程进行了共性描述。

后续会单独通过一篇博文介绍这部分的详细流程以及不同版本的差异。

参考资料

SSH原理与实践(一)的更多相关文章

  1. SSH 的原理和实践

    最近自己在学习使用SSH,现将自己理解的SSH原理和实践SSH的操作写成一篇博客,以供日后查看. 一.SSH是什么?为什么会出现SSH? SSH英文全称是Secure Shell,即安全外壳.首先SS ...

  2. SSH原理讲解与实践

    一.简介 SSH全名Secure Socket Shell,安全外壳传输协议.专为远程登录会话和其他网络服务提供安全性的协议 二.加密算法 要了解SSH的原理,就要先知道目前主流的俩种加密算法 2.1 ...

  3. 2018-2019-2 20165225『网络对抗技术』Exp2:后门原理与实践

    2018-2019-2 20165225『网络对抗技术』Exp2:后门原理与实践 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 (0.5分) 任务二:使用socat获取主 ...

  4. 2018-2019-2 20165312《网络攻防技术》Exp2 后门原理与实践

    2018-2019-2 20165312<网络攻防技术>Exp2 后门原理与实践 课上知识点梳理总结 1.后门的概述 后门是指不经过正常认证流程而访问系统的通道 两个关键词:未认证.隐通道 ...

  5. ssh原理图解

    SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式.在此之前,远程登录一般常用FTP和Telnet,但是它们以明文的形式在网络中传输账 ...

  6. 2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践 后门的基本概念及基础问题回答 常用后门工具 netcat Win获得Linux Shell Linux获得Win Sh ...

  7. 图解SSH原理

    1. 初见SSH SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务. SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案.使用范围最广泛的当然 ...

  8. (转)图解SSH原理

    图解SSH原理 原文:https://www.jianshu.com/p/33461b619d53 http://blog.51cto.com/forlinux/1352900---------SSH ...

  9. Atitit 管理原理与实践attilax总结

    Atitit 管理原理与实践attilax总结 1. 管理学分类1 2. 我要学的管理学科2 3. 管理学原理2 4. 管理心理学2 5. 现代管理理论与方法2 6. <领导科学与艺术4 7. ...

  10. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

随机推荐

  1. CentOS使用iptables开放3000端口

    关闭firewall systemctl stop firewalld.service 禁止firewall开机启动 systemctl disable firewalld.service 设置ipt ...

  2. 强化学习从基础到进阶-案例与实践[5.1]:Policy Gradient策略梯度-Cart pole游戏展示

    强化学习从基础到进阶-案例与实践[5.1]:Policy Gradient策略梯度-Cart pole游戏展示 强化学习(Reinforcement learning,简称RL)是机器学习中的一个领域 ...

  3. 强化学习技巧三:Python多进程

    1.Python多进程模块 Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Proce ...

  4. 性能暴增70%!AMD线程撕裂者RPO 7000将于10月19日发布: 96核心Zen 4史无前例

    据wccftech最新报道,AMD的下一代Ryzen Threadripper(线程撕裂者)PRO 7000"Storm Peak"CPU将于10月19日作为终极工作站解决方案亮相 ...

  5. 【scikit-learn基础】--『分类模型评估』之评估报告

    分类模型评估时,scikit-learn提供了混淆矩阵和分类报告是两个非常实用且常用的工具.它们为我们提供了详细的信息,帮助我们了解模型的优缺点,从而进一步优化模型. 这两个工具之所以单独出来介绍,是 ...

  6. Zookeeper-ZKFC的原理和功能

    一.前言 HADOOP2 HA架构引入了ZKFC.Journalnode组件,本篇文章主要介绍ZKFC的功能和原理.HA架构支持两种切换方式: 手动切换:  通过命令实现主备之间的切换,可以用HDFS ...

  7. docker离线安装及设置默认存储目录

    一.离线安装Docker 在内网环境下,一般不能联网在线部署,这时候就需要以离线的方式安装docker.本文介绍在CentOS 7.6环境中离线安装docker的步骤. 1. 下载docker安装包 ...

  8. 从零开始的react入门教程(七),react中的状态提升,我们为什么需要使用redux

    壹 ❀ 引 在前面的文章中,我们了解到react中的数据由props与State构成,数据就像瀑布中的水自上而下流动,属于单向数据流.而这两者的区别也很简单,对于一个组件而言,如果说props是外部传 ...

  9. JS 这一次彻底理解插入排序

    壹 ❀ 引 在前两篇排序文章中,我们分别介绍了冒泡排序与选择排序,趁热打铁,我们接着聊插入排序.老实说,在分析排序过程中头脑很清楚,过后再尝试写出排序代码还有点坎坷...可能是我脑瓜子不太机灵的问题, ...

  10. NVM Feature— Reservation(NVME 学习笔记五)

    8.8 Reservations 预订 NVMe的reservation预订功能,用于让两个或多个主机能够协调配合的访问共享namespace.使用这些功能的协议和方式超出了本规格说明书的范围.对这些 ...