SSH 的全称是什么2025年03月17日 | 阅读 9 分钟 SSH:安全外壳协议SSH 是 Secure Shell 的缩写。它也称为安全套接字外壳。安全外壳 (SSH) 是一种加密网络协议,用于在不安全的网络上安全地运行网络服务。SSH 应用程序以客户端-服务器架构为基础,该架构将 SSH 客户端实例与 SSH 服务器连接起来。 ![]() SSH 作为 Telnet 和不安全的远程 Unix shell 协议(如 Berkeley 远程 shell (rsh) 及其关联的 rlogin 和 rexec 协议)的后继者而创建,它为使用不安全、明文身份验证令牌通信的类 Unix 操作系统而设计。 定义我们可以通过多种方式应用 SSH。最简单的实现方式是使用通信通道和网络连接两端的自动生成的公钥-私钥对加密数据。然后,它使用密码对用户进行身份验证。当用户手动生成公钥-私钥对时,一旦建立密钥对,身份验证几乎就完成了,从而无需密码提示即可立即启动会话。 ![]() 在这种情况下,所有者会保密相应的私钥,并将公钥安装在所有必须授予所有者访问权限的机器上。尽管私钥是身份验证的基础,但在进行身份验证时,密钥永远不会通过网络发送。SSH 确认公钥的提供者也持有相应的私钥。 在所有 SSH 版本中,在接受公钥作为合法公钥并附带 ID 之前,将未知公钥与已知私钥进行关联至关重要。如果未经验证就接受来自攻击者的公钥,那么就等于接受了一个不可信的攻击者作为合法用户。 创建SSH 最初由芬兰计算机科学家 Tatu Ylönen 于 1995 年创建。该协议套件的进一步开发在多个开发团队中进行,导致了各种实现迭代。有适用于所有流行操作系统(包括嵌入式系统)的实现。OpenSSH 由 OpenBSD 的创建者于 1999 年作为开源软件提供,它是最常用的软件堆栈。 SSH 密钥的认证管理在类 Unix 系统上,批准的公钥列表通常保存在用户主目录下的 ~/.ssh/authorized_keys 文件中,该文件具有远程登录权限。只有当该文件不能被除所有者和 root 以外的任何人修改时,SSH 才认为该文件有效。当远程端的公钥和本地端的匹配私钥都存在时,就不再需要密码了。但是,我们可以使用密码短语来锁定私钥以获得更高的安全性。我们还可以搜索常用位置中的密钥,并使用命令行选项提供其完整路径(ssh 的 -i 选项)。 ![]() SSH 还提供自动密钥生成加密的基于密码的身份验证。在这种情况下,攻击者可能会冒充可信服务器端,请求密码并获取它(中间人攻击)。在服务器端,我们可以关闭密码身份验证。 用途SSH 使用客户端-服务器范例。通常,SSH 用于登录。它还可以隧道 TCP 端口、转发 X11 连接以及在远程系统上执行命令。通常,使用 SSH 客户端应用程序连接到允许远程连接的 SSH 守护程序。两者通常都存在于大多数现代操作系统中,例如 macOS、Linux 发行版、OpenBSD、FreeBSD、NetBSD、Solaris 和 OpenVMS。有些版本是专有的、免费软件和开源的,具有不同程度的复杂性和全面性(例如 PuTTY 和 Cygwin 和 OpenSSH 附带的 OpenSSH 版本)。值得注意的是,在 Windows 10 版本 1709 之前,SSH 默认不包含在 Windows 版本中。 免费开源的 Windows 应用程序 WinSCP 提供了类似的文件管理(同步、复制和远程删除)功能,它使用 PuTTY 作为后端。无需在客户端计算机上安装,WinSCP 和 PuTTY 可以打包运行,直接从 USB 驱动器运行。通常需要启用 Windows 设置应用中的某项功能来设置 SSH 服务器。 为了处理连接问题并避免将基于云的虚拟机直接暴露给 Internet 的安全风险,SSH 在云计算中至关重要。可以通过防火墙通过 SSH 隧道将虚拟计算机安全地连接到 Internet。对于此协议,IANA 已指定 TCP 端口 22、UDP 端口 22 和 SCTP 端口 22。 早在 2001 年,IANA 就将 SSH 服务器的默认 TCP 端口 22 列为众所周知的端口之一。面向连接的传输层协议 SCTP 可以替代 TCP 来运行 SSH。 历史演进第一次迭代1995 年,芬兰赫尔辛基理工大学的研究员 Tatu Ylönen 在其机构的网络上遭受密码嗅探攻击的启发,创建了该协议的初始版本(如今称为 SSH-1)。 SSH 被设计用来取代以前的协议,包括 rlogin、TELNET、FTP 和 rsh,这些协议缺乏强大的身份验证和保密保证。Ylönen 将他的应用程序作为免费软件提供。1995 年 7 月,该设备迅速普及。到 1995 年底,已有 20,000 名 SSH 用户遍布 50 个国家。 为了推广和发展 SSH,Ylönen 于 1995 年 12 月成立了 SSH Communications Security。SSH 程序的第一版使用了 GNU libgmp 等各种免费软件组件,但后来 SSH Communications Security 提供的版本发展成为越来越专有的软件。据估计,到 2000 年,用户已达 200 万。 第二次迭代互联网工程任务组 (IETF) 在其官方文档中将负责创建 SSH 协议版本 2 的工作组指定为“Secsh”。 SSH-2,一个改进的协议版本,于 2006 年成为标准。此版本与 SSH-1 不兼容。SSH-2 提供了比 SSH-1 更强大的功能和安全性升级。例如,Diffie-Hellman 密钥交换和通过消息认证码实现的强大完整性验证提供了更高的安全性。SSH-2 的新功能之一是能够在单个 SSH 连接上传输无限数量的 shell 会话。由于 SSH-2 比 SSH-1 更先进且被广泛使用,因此某些实现,例如 libssh (v0.8.0+)、Lsh 和 Dropbear,仅支持 SSH-2。 版本 1.992006 年 1 月,RFC 4253 要求支持 2.0 及更早版本的 SSH 服务器将其协议版本指示为 1.99,远在版本 2.1 开发之后。此版本号用于指示向后兼容性,而不是代表之前的软件修订。 OSSH 和 OpenSSH![]() 自 1999 年原始 SSH 程序发布的最后一个版本 1.2.12 以开源许可证分发以来,开发人员一直在致力于免费软件版本。这被用作 Björn Grönvall 的 OSSH 程序的基金。不久之后,OpenBSD 团队克隆了 Grönvall 的工作,创建了 OpenSSH,它包含在 OpenBSD Release 2.6 中。他们从该版本创建了一个“可移植性”分支,将 OpenSSH 移植到不同的操作系统。 截至 2005 年,OpenSSH 是使用最广泛的 SSH 实现,它是许多操作系统发行版中的默认版本。在 OpenSSH 7.6 版本中从代码库中删除 SSH-1 支持后,OpenSSH 仍在更新并支持 SSH-2 协议。与此同时,OSSH 不再具有相关性。 用途用户“josh”作为隧道 X11 程序通过 SSH 的示例,从本地计算机“foo fighter”通过“SSH”连接到远程计算机“tengwar”以运行 xeyes。人们使用 Windows SSH 客户端 PuTTY 来访问 OpenWrt。 SSH 是一种与许多系统兼容的协议,包括 Microsoft Windows 和大多数 Unix 变体(Linux、BSD、包括 Apple 的 macOS 和 Solaris)。以下应用程序可能需要独有于或兼容特定 SSH 客户端或服务器的功能。例如,目前只能使用 SSH 协议的 OpenSSH 服务器和客户端实现来构建 VPN。
文件传输方法几种文件传输系统使用安全外壳协议,例如
架构SSH 协议的分层架构由三个不同的组件组成
由于其开放的设计,SSH 除了保护 shell 外,还可以用于广泛的任务,赋予其极大的通用性。 漏洞SSH-1由于该协议版本中的 CRC-32 数据完整性保护不足,1998 年发现了 SSH 1.5 的一个漏洞,允许将数据未经授权地插入到加密的 SSH 流中。在大多数实现中,添加了一个名为 SSH Compensation Attack Detector 的补丁。其中一些修改后的实现包含一个新的整数溢出漏洞,允许攻击者以 root 或 SSH 守护程序的权限运行任意代码。 2001 年 1 月发现了一个允许攻击者更改 IDEA 加密会话最后一个块的漏洞。同月还发现了一个允许恶意服务器将客户端登录传递给另一个服务器的漏洞。 由于其固有的漏洞,SSH-1 通常被认为已过时,应避免使用,应明确禁用 SSH-1 回退。大多数现代服务器和客户端都支持 SSH-2。 CBC 的明文恢复2008 年 11 月发现了一个理论上的漏洞,该漏洞允许从使用当时标准加密方法 CBC 加密的密文块中恢复多达 32 位明文。最简单的修复方法是将 CBC 模式切换为 CTR 模式,这使得 SSH 对该攻击免疫。 ![]() NSA 涉嫌解密爱德华·斯诺登于 2014 年 12 月 28 日向《明镜周刊》发布的敏感文件暗示,美国国家安全局将能够潜在地解码某些 SSH 通信。 下一个主题全称 |
我们请求您订阅我们的新闻通讯以获取最新更新。