什么是 SSH?理解 SSH 及其加密技术

远程连接服务器这件事,在没有加密的年代风险极高。用户名、密码、每一条执行的命令,全部明文跑在网络上,同一局域网里的人抓个包就能看清楚。Telnet 和 Rlogin 就是那时候的主流工具,凑合能用,但毫无保护可言。

1995年,芬兰计算机科学家 Tatu Ylönen 在自己的大学网络里遇到了一次密码嗅探攻击,随后开发出了 SSH。目标就一个:让远程连接变得真正安全。

SSH连接是怎么建立的

SSH 走的是客户端-服务器模型。客户端发起连接,双方先谈好用哪套加密算法,完成身份验证之后,建立起一条加密隧道。后续所有通信都在这条隧道里走——命令、回显、文件,一概如此。外面的人就算截到了数据包,也只是一堆乱码。

加密这块,SSH 同时用了两套机制。

握手阶段走非对称加密。服务器上存着你的公钥,你本地持有私钥。连接时服务器用公钥做验证,只有拿着对应私钥的客户端才能通过。密码全程没有在网络上出现过。

隧道建立之后切换成对称加密。双方共用一个会话密钥,每次连接单独生成,负责加解密后续所有传输内容。对称加密比非对称轻得多,这个切换在安全和性能上都说得通。

数据完整性靠哈希校验来保证。每段数据发出去的时候都带着一个哈希值,对方收到后拿来比对,不一致就说明数据在途中被动过,连接直接断掉。

什么是 SSH
什么是 SSH?

密码登录 vs 密钥登录

初次用 SSH,大多数人图省事走密码登录。填用户名、填密码,直觉上没毛病。但密码的问题在于,长度和复杂度都有上限,面对自动化爆破脚本的持续轰炸,只要时间够,迟早有被撞上的可能。

密钥认证把这条路堵死了,RSA 或 ED25519 密钥的长度和随机性根本不是手打密码能比的,暴力破解在计算上不现实。私钥还可以加 passphrase,万一密钥文件泄露,攻击者也进不去。

生产服务器建议直接在 /etc/ssh/sshd_config 里关掉密码登录:

PasswordAuthentication no
PermitRootLogin no

root 登录一并禁掉。攻击者通常第一个试的就是 root,禁掉之后他们还得先猜一个有效的普通账户,凭空多了一道门槛。

默认的 22 端口也可以改。改端口算不上安全手段,但能明显减少自动化扫描的骚扰,日志里少很多噪音。

SSH日常用途

登录云主机、执行运维命令、排查线上问题,这是 SSH 最日常的用途。对运维来说基本上开电脑第一件事就是开终端连服务器。

文件传输的话,SFTP 和 SCP 都跑在 SSH 上,全程加密,比裸 FTP 安全太多,敏感文件、配置、备份走这条路是标准做法。

代码部署这块,Git 原生支持 SSH 协议推拉代码。CI/CD 流程里部署脚本用密钥免密登录目标机器,自动跑完整个发布流程,配置里不需要硬写任何密码。

端口转发和隧道用的人相对少,但很好使。把本地端口映射到远程服务、把内网服务拉到本地访问、给不支持加密的协议套一层隧道,这些在受限网络或者内网穿透场景里经常用到。

加固的时候容易漏掉什么

SSH 协议本身这么多年下来没什么大问题,出事基本都是配置没收紧。

防火墙限制来源 IP 是最直接的办法。运维机器 IP 固定的话做个白名单,其他 IP 连握手都走不到,扫描和爆破在网络层就被挡掉了。

Fail2Ban 可以作为补充。它盯着登录失败记录,超过阈值自动封 IP,对付那种低频慢速爆破比较有效,和防火墙配合起来覆盖面更全。

服务端版本更新也容易被忽视。旧版本的漏洞在公开漏洞库里基本都能查到利用方式,更新本身不费什么事,但能堵住一批已知攻击手段。

以上几点做到位之后,针对 SSH 的常见攻击基本没有切入点。剩下的隐患通常来自私钥管理混乱或者内部操作失误,那就不是协议层能解决的事了。

常见问题

SSH 使用哪个端口?

默认情况下,SSH 使用端口 22 进行安全远程连接。虽然这是标准端口,但可以更改为自定义端口,以减少自动攻击的风险并提升安全性。

SSH 完全安全吗?

SSH 被认为高度安全,因为它采用强加密、认证和数据完整性检查。然而,其安全性依赖于正确的配置、定期更新以及遵守最佳实践规则,比如使用 SSH 密钥代替密码。

SSH 会被黑客攻击吗?

Secure Shell 本身非常难以攻破,但配置不当的服务器可能存在漏洞。弱密码、过时的软件或开放的 root 权限会使攻击者更容易攻击 SSH 目标,这也是安全加固至关重要的原因。

哪些操作系统支持 Secure Shell?

SSH 支持所有主要操作系统,包括 Linux、macOS 和 Windows。大多数基于 Unix 的系统默认支持 SSH,而 Windows 则通过内置工具或第三方客户端支持 SSH。

为什么 SSH 比老式远程访问协议更受欢迎?

SSH 取代了旧协议如 Telnet,因为它加密所有通信。这防止了攻击者拦截凭证或数据,使 SSH 在现代远程访问和服务器管理中更加安全。

原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2416.html

Like (1)
Previous 2026年4月13日 下午3:13
Next 2026年4月14日 上午11:06

相关推荐

  • http和https的区别及优缺点

    你有没有注意到,有些网站的网址开头是http://,有些则是https://? 虽然看起来只差了一个「s」,但它们的安全性和运作方式却完全不同。 什么是 HTTP? http 的定…

    2026年5月13日
    0
  • Vim 自动缩进命令

    Vim 是一款模式化文本编辑器,支持多种编辑模式,不同模式下键盘按键的功能会发生变化。它自带一套功能强大、设置灵活的自动缩进机制,核心就是 indentexpr 选项。写代码时缩进…

    2026年4月29日
    0
  • IPv4 与 IPv6 是什么? 带你一次搞懂 IP 地址差异

    随着网络设备、云端服务与 IoT 应用快速成长,全球连接设备的数量早已远远超过当初设计网络时的预期,也让 IPv4 地址不足成为无法忽视的现实问题。 从电脑、手机、企业官网、App…

    2026年3月28日
    0
  • 理解带宽、延迟和流量

    在线观看电影、参加视频通话或部署云应用时,有三个无形因素决定了体验的流畅程度:带宽、延迟和流量。这些术语经常被混淆,但它们描述的是网络性能的不同方面。 带宽:定义与实际意义 带宽定…

    2026年4月17日
    0
  • WordPress报413请求实体过大错误

    413 请求实体过大错误,是一种 HTTP 响应,意思是你发送的内容比服务器能接受的要大。HTTP 400 系列错误一般是客户端的问题,但 413 错误更多是因为上传的内容本身合法…

    2026年3月28日
    0
  • web应用渗透测试流程

    对于web应用的渗透测试,大致可分为三个阶段:信息收集、漏洞发现以及漏洞利用。在实践过程中需要进一步明细测试的流程,以下通过9个阶段来描述渗透测试的整个流程: 1.明确目标 1)确…

    2026年5月30日
    0
  • 如何改变Linux云服务器的SSH端口

    SSH(Secure shell)是一种加密网络协议,用于安全连接远程服务器,可在主机与客户端之间以加密形式传输数据。 SSH 默认 TCP 端口为 22,修改默认端口,能够防范恶…

    2026年5月26日
    0
  • 反向代理服务器是什么?

    我们经常会碰到”反向代理服务端”这个术语,比如常见文章里提到 nginx 是一款反向代理服务端……下面就来认识下这个概念 含义 “反向代理服务端…

    2026年5月29日
    0
  • Linux常用到的归档与压缩命令盘点

    在日常运维工作中,不可避免会打包压缩和解压文件,Linux上有多个类似功能的命令,如 tar、gzip、bzip2、xz、zip,今天就跟大家一起区分一下并学会如何高效实用它们。 …

    2026年5月7日
    0
  • 站点为什么要安装SSL证书?

    大数据时代互联网发展迅速,给我们的生活带来便利的同时,也伴随着很多网络钓鱼、信息泄露、网络诈骗等事件的频繁发生,互联网就像一张巨型的蜘蛛网,汇聚和扩散各种各样的信息,而网站在当中就…

    2026年4月25日
    0