news 2026/6/15 17:49:44

什么是SSH

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是SSH

文章目录

    • 为什么需要SSH
    • SSH是如何工作的
    • SSH端口号是什么
    • 常用SSH连接工具:PuTTY和OpenSSH
    • SSH和SSL的区别



SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。默认情况下,SSH服务器使用端口号22。


为什么需要SSH

SSH代表什么?SSH 代表 Secure Shell,也称为 Secure Socket Shell。传统的互联网通信使用明文传输数据,内容一旦被截获就会完全暴露,存在很多安全隐患。SSH协议通过对网络数据进行加密和验证,建立SSH客户端和SSH服务器之间的安全隧道,在不安全的网络环境中为网络服务提供了安全的传输通道。

在SSH协议出现之前,Telnet广泛应用于远程登录场景,为远程管理网络设备提供了极大便利,而FTP作为常用的文件传输协议,兼具操作简单和传输效率高的优点,但它们都存在相同的问题,即明文传输数据带来的安全隐患。SSH采用加密传输数据、提升认证强度等手段,克服了Telnet和FTP应用中的安全性问题,实现了安全的远程登录和文件传输业务。


SSH常用场景

SSH是如何工作的

SSH由服务器和客户端组成,为建立安全的SSH通道,双方需要先建立TCP连接,然后协商使用的版本号和各类算法,并生成相同的会话密钥用于后续的对称加密。在完成用户认证后,双方即可建立会话进行数据交互。SSH的工作流程包括如下几个阶段。

SSH工作流程

连接建立

SSH依赖端口进行通信。在未建立SSH连接时,SSH服务器会在指定端口侦听连接请求,SSH客户端向SSH服务器该指定端口发起连接请求后,双方建立一个TCP连接,后续会通过该端口通信。

版本协商

SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号,过程如下:

  1. SSH服务器通过建立好的连接向SSH客户端发送支持的SSH版本信息。

  2. SSH客户端收到版本信息后,根据自身支持的SSH版本决定使用的版本号,并将决定使用的版本号发送给SSH服务器。

  3. SSH服务器判断自己是否支持客户端决定使用的版本号,从而确定版本协商是否成功。

算法协商

SSH工作过程中需要使用多种类型的算法,包括用于产生会话密钥的密钥交换算法、用于数据信息加密的对称加密算法、用于进行数字签名和认证的公钥算法和用于数据完整性保护的HMAC算法。SSH服务器和客户端对每种类型中具体算法的支持情况不同,因此双方需要协商确定每种类型中最终使用的算法,过程如下:

  1. SSH服务器和客户端分别向对方发送自己支持的算法。

  2. SSH服务器和客户端依次协商每种类型中具体使用的算法。在每类算法的协商过程中,SSH服务器和客户端都会匹配出双方均支持的算法作为最终使用的算法。每类算法均匹配成功后,算法协商完成。如果某类算法全部匹配失败,则该类型的算法协商失败,这会导致SSH服务器和客户端之间算法协商失败并断开连接。

密钥交换

SSH服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。在该阶段也会完成客户端对服务器的身份认证,服务器先使用服务器私钥对消息进行签名,客户端再使用服务器公钥验证签名,从而完成客户端对服务器的身份认证。

由于SSH服务器和客户端需要持有相同的会话密钥用于后续的对称加密,为保证密钥交换的安全性,SSH使用一种安全的方式生成会话密钥,由SSH服务器和客户端共同生成会话密钥,利用数学理论巧妙地实现不直接传递密钥的密钥交换,无需通过不安全通道传送该密钥,具体过程如下图所示。

SSH密钥交换

  1. SSH服务器生成素数G、P、服务器私钥b,并计算得到服务器公钥y=(G^b)%P。

  2. SSH服务器将素数G、P、服务器公钥y发送给SSH客户端。

  3. SSH客户端生成客户端私钥a,计算得到客户端公钥x=(G^a)%P。

  4. SSH客户端将客户端公钥x发送给SSH服务器。

  5. SSH服务器计算得到对称密钥K=(xb)%P,SSH客户端计算得到对称密钥K=(ya)%P,数学定律可以保证SSH服务器和SSH客户端生成的对称密钥相同。

用户认证

SSH客户端向SSH服务器发起认证请求,SSH服务器对SSH客户端进行认证。SSH支持以下几种认证方式:

  • 密码(password)认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。
  • 密钥(publickey)认证:客户端通过用户名、公钥以及公钥算法等信息来与服务器进行认证。
  • password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。
  • all认证:只要满足密码认证和密钥认证其中一种即可。

SSH用户认证最基本的两种方式是密码认证和密钥认证。密码认证的基本原理是SSH客户端使用对称密钥对密码进行加密,SSH服务器使用对称密钥解密后验证密码的合法性,这种认证方式比较简单,且每次登录都需要输入用户名和密码。而密钥认证可以实现安全性更高的免密登录,基本原理是SSH客户端使用客户端私钥对消息进行签名,服务器再使用客户端公钥验证签名,这是一种广泛使用且推荐的登录方式。

会话请求

认证通过后,SSH客户端向服务器发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。服务器根据客户端请求进行回应。

会话交互

会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互,双方发送的数据均使用会话密钥进行加解密。

SSH端口号是什么

默认情况下,SSH服务器使用端口号22。当SSH应用于NETCONF时,可以指定默认端口号是22或者830。SSH使用的端口号可以被更改为设备其他可用端口,更改后当前所有的连接都会断开,SSH服务器开始侦听新的端口。由于SSH默认端口号22为知名端口,在进行关键安全传输时,建议修改SSH端口号。

常用SSH连接工具:PuTTY和OpenSSH

由于SSH是一套协议标准,需要依赖基于SSH实现的工具完成SSH客户端和SSH服务器之间的连接,PuTTY和OpenSSH应运而生。

PuTTY是Windows上经典的免费SSH连接工具,通常用于使用SSH协议远程登录设备,最新版本可以在PuTTY官网下载。

OpenSSH是SSH协议的开源实现,支持在Unix操作系统上运行,最新版本可以在OpenSSH官网下载。目前Windows10已经包含OpenSSH客户端和服务器软件,可在“设置—应用—应用与功能—可选功能”中搜索安装。

SSH和SSL的区别

SSH和SSL都是网络安全协议,通过加密和认证提升两台设备间传输数据的安全性。但SSH和SSL的生效方式和服务目标存在差异。

SSH在两台设备间创建安全隧道,使这两台设备间可以安全地发送命令、传输数据等。例如,客户端通过SSH远程登录到一台服务器上,就可以安全地远程管理这台服务器,在服务器上执行想要的命令。

SSL则是使用SSL证书保证两台设备间安全地传输数据,而不是像SSH那样可以执行命令。例如,用户通过浏览器访问某安装了SSL证书且启用了HTTPS的服务器,浏览器和服务器之间可以安全地传输数据。

SSH就像一辆汽车,我们看不到这辆封闭的汽车里装载的是什么。而SSL就像一个封闭的集装箱,我们可以用不同的交通工具运输它,但看不到集装箱里装的是什么。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:05:50

YOLOv5快速验证方案:1块钱测试模型效果,不满意不花钱

YOLOv5快速验证方案:1块钱测试模型效果,不满意不花钱 你是不是也遇到过这样的情况?作为技术主管,团队正在评估一个新项目是否要引入目标检测功能,而YOLOv5听起来很厉害——速度快、精度高、社区活跃。但问题是&#x…

作者头像 李华
网站建设 2026/6/15 13:14:05

Yuzu模拟器完整部署指南:5分钟从零到精通

Yuzu模拟器完整部署指南:5分钟从零到精通 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 还在为Switch模拟器的复杂配置而困扰吗?本指南将带你快速掌握Yuzu模拟器的完整部署流程&#xff0c…

作者头像 李华
网站建设 2026/6/15 11:43:35

AI智能二维码工坊飞书应用集成:组织内部扫码流程优化

AI智能二维码工坊飞书应用集成:组织内部扫码流程优化 1. 引言 1.1 业务场景描述 在现代企业协作环境中,信息传递的效率直接影响组织运作的敏捷性。尤其是在审批、资产登记、会议签到、设备报修等高频场景中,员工常需快速访问链接或提交结构…

作者头像 李华
网站建设 2026/6/15 11:43:38

创意编程:用代码谱写音频视觉的交响诗

创意编程:用代码谱写音频视觉的交响诗 【免费下载链接】p5.js p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles…

作者头像 李华
网站建设 2026/6/15 11:45:10

Pony V7:AuraFlow架构打造超高清角色生成神器

Pony V7:AuraFlow架构打造超高清角色生成神器 【免费下载链接】pony-v7-base 项目地址: https://ai.gitcode.com/hf_mirrors/purplesmartai/pony-v7-base 导语:PurpleSmartAI推出基于AuraFlow架构的Pony V7角色生成模型,以超10M高质量…

作者头像 李华