fbpx
维基百科

Secure Shell

安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境[1]。SSH通过在网络中建立安全隧道英语secure channel来实现SSH客户端与服务器之间的连接[2]。SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH使用频率最高的场合是类Unix系统,但是Windows操作系统也能有限度地使用SSH。2015年,微软宣布将在未来的操作系统中提供原生SSH协议支持[3]Windows 10 1803版本已提供OpenSSH工具[4]

在设计上,SSH是Telnet和非安全shell的替代品。Telnet和Berkeley rlogin英语rloginrshrexec英语Remote Process Execution等协议采用明文传输,使用不可靠的密码,容易遭到监听、嗅探中间人攻击[5]。SSH旨在保证非安全网络环境(例如互联网)中信息加密完整可靠。

不过,SSH也被指出有被嗅探甚至解密的漏洞。早在2011年,中國的網際網路審查機構已經有能力針對SSH連線的刺探及干擾。[6][7]而後爱德华·斯诺登泄露的文件也指出,美国国家安全局有时能够把SSH协议传输的信息解密出来,从而读出SSH会话的传输内容[8]。2017年7月6日,非营利组织維基解密确认美国中央情报局已经开发出能够在WindowsLinux操作系统中窃取SSH会话的工具。[9]

概述 编辑

SSH以非对称加密实现身份验证[2]。身份验证有多种途径,例如其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程中私钥本身不会传输到网络中。

SSH协议有两个主要版本,分别是SSH-1和SSH-2。无论是哪个版本,核实未知密钥来源都是重要的事情,因为SSH只验证提供用户是否拥有与公钥相匹配的私钥,只要接受公钥而且密钥匹配服务器就会授予许可。这样的话,一旦接受了恶意攻击者的公钥,那么系统也会把攻击者视为合法用户。

密钥管理 编辑

类Unix系统中,已许可登录的公钥通常保存在用户 /home 目录的 ~/.ssh/authorized_keys 文件中[10],该文件只由SSH使用。当远程机器持有公钥,而本地持有对应私钥时,登录过程不再需要手动输入密码。另外为了额外的安全性,私钥本身也能用密码保护。

私钥会保存在固定位置,也可以通过命令行参数指定(例如ssh命令的“-i”选项)。ssh-keygen是生成密钥的工具之一。

SSH也支持基于密码的身份验证,此时密钥是自动生成的。若客户端和服务端从未进行过身份验证,SSH未记录服务器端所使用的密钥,那么攻击者可以模仿服务器端请求并获取密码,即中间人攻击。但是密码认证可以禁用,而且SSH客户端在发现新密钥或未知服务器时会向用户发出警告。

应用 编辑

SSH的经典用途是登入到远程电脑中执行命令。除此之外,SSH也支持隧道协议端口映射X11连接。借助SFTPSCP协议,SSH还可以传输文件[2]

SSH使用客户端-服务器模型,标准端口为22[11]。服务器端需要开启SSH守护进程以便接受远端的连接,而用户需要使用SSH客户端与其建立连接。

大多数现代操作系统(包括macOS、大部分LinuxOpenBSDFreeBSDSolaris等系统)都提供了SSH,包括Windows系统也提供SSH程序(在Windows 10 1809版本之后)。在软件层次,许多关于SSH的专有软件免費軟體开源软件被研发出来,如:

  • 文件管理软件(同步、复制、删除等)。如:PuTTY和Windows下的WinSCP、类Unix系统下的Konqueror等。
  • SSH客户端

云计算的角度上讲,SSH能够阻止一些因直接暴露在互联网而产生的安全问题,在解决连接问题上发挥了重要作用。SSH隧道可以在互联网、防火墙虚拟机之间提供一个安全的通道[12]

历史 编辑

1.x版本 编辑

芬兰赫尔辛基理工大学塔图·于勒宁发现自己学校存在嗅探密码的网络攻击,便于1995年编写了一套保护信息传输的程序,并称其为“secure shell”,简称SSH[13],设计目标是取代先前的rlogin英语rloginTelnetFTP[14]rsh等安全性不足的协议。1995年7月,于勒宁以免費軟體的形式将其发布。程序很快流行起来,截至1995年底,SSH的用户数已经达到两万,遍布五十个国家。

1995年12月,于勒宁创立了SSH通信安全公司来继续开发和销售SSH。SSH的早期版本用到了很多自由软件,例如GNU libgmp,但后来由SSH公司发布的版本逐渐变成了专有软件

截至2000年,已经有两百万用户使用SSH。[15]

OpenSSH和OSSH 编辑

1999年,开发者们希望使用自由版本的SSH,于是重新使用较旧的1.2.12版本,这也是最后一个采用开放源代码许可的版本。随后瑞典程序员Björn Grönvall基于这个版本开发了OSSH。不久之后,OpenBSD的开发者又在Grönvall版本的基础上进行了大量修改,形成了OpenSSH,并于OpenBSD 2.6一起发行。从该版本开始,OpenSSH又逐渐移植到了其他操作系统上面。[16]

截至2005年,OpenSSH是唯一一种最流行的SSH实现,而且成为了大量操作系统的默认组件,而OSSH已经过时[17]。OpenSSH仍在维护,而且已经支持SSH-2协议。从7.6版开始,OpenSSH不再支持SSH-1协议。

2.x版本 编辑

2006年,SSH-2协议成为了新的标准。与SSH-1相比,SSH-2进行了一系列功能改进并增强了安全性,例如基于迪菲-赫爾曼密鑰交換的加密和基于訊息鑑別碼的完整性检查。SSH-2还支持通过单个SSH连接任意数量的shell会话。SSH-2协议与SSH-1不兼容,由于更加流行,一些实现(例如lshDropbear)只支持SSH-2协议。

1.99版 编辑

RFC 4253规定支持2.0及以前版本SSH的SSH服务器应将其原始版本标为“1.99”[18]。“1.99”并不是实际的软件版本号,而是为了表示向下兼容

基本架構 编辑

SSH协议框架中最主要的部分是三个协议:

  1. 传输层协议(The Transport Layer Protocol):传输层协议提供服务器认证,数据机密性,信息完整性等的支持。
  2. 用户认证协议(The User Authentication Protocol):用户认证协议为服务器提供客户端的身份鉴别。
  3. 连接协议(The Connection Protocol):连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。

同时还有为许多高层的网络安全应用协议提供扩展的支持。

各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。

SSH的安全验证 编辑

在客户端来看,SSH提供两种级别的安全验证。

  • 第一种级别(基于密碼的安全验证),知道帐号和密碼,就可以登录到远程主机,并且所有传输的数据都会被SSH传输层协议加密。但是,可能会有别的服务器在冒充真正的服务器,但只要客户端校验主机公钥,在服务器私钥不泄露的前提下就能避免被「中间人」攻击。
  • 第二种级别(基于密钥的安全验证),需要依靠密钥,也就是你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。客户端软件会向服务器发出请求,请求用你的私钥进行安全验证并发送使用私钥对会话ID等信息的签名。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较,并用公钥检验签名是否正确。如果两个密钥一致,且签名正确,服务器就认为用户登录成功。

在服务器端来看,SSH也提供安全验证。

  • 服务器将自己的公钥分发给相关的客戶端,并将密钥交换过程中的公开信息与协商密钥的哈希值的签名发送给客戶端,客户端将获取的服务器公钥计算指纹并与其他安全信道获得的公钥指纹相比对并验证主机签名。
  • 存在一个密钥认证中心,所有提供服务的主机都将自己的公钥提交给认证中心,公钥认证中心给服务端颁发证书,而任何作为客戶端的主机则只要保存一份认证中心的公钥就可以了。在这种模式下,服务器会发送认证中心提供给主机的证书与主机对密钥交换过程中公开信息的签名。客户端只需要验证证书的有效性并验证签名。

SSH协议的可扩展性 编辑

SSH协议框架中设计了大量可扩展项,比如用户自定义算法、客户自定义密钥规则、高层扩展功能性应用协议。这些扩展大多遵循IANA的有关规定,特别是在重要的部分,像命名规则和消息编码方面。

参考文献 编辑

  1. ^ The Secure Shell (SSH) Protocol Architecture. RFC 4251. IETF Network Working Group. 2006-01 [2017-12-02]. (原始内容于2018-10-10). 
  2. ^ 2.0 2.1 2.2 The Secure Shell (SSH) Authentication Protocol. RFC 4252. IETF Network Working Group. 2006-01 [2017-12-02]. (原始内容于2017-11-19). 
  3. ^ Peter Bright. Microsoft bringing SSH to Windows and PowerShell. Ars Technica. 2015-06-02 [2017-12-02]. (原始内容于2017-06-09). 
  4. ^ maertendMSFT. OpenSSH in Windows. docs.microsoft.com. [2019-05-11]. (原始内容于2019-05-11) (美国英语). 
  5. ^ SSH Hardens the Secure Shell (页面存档备份,存于互联网档案馆), Serverwatch.com
  6. ^ . www.solidot.org. 2011-11-21 [2021-10-24]. (原始内容存档于2020-07-07). 
  7. ^ Greenberg, Andy. China's Great Firewall Tests Mysterious Scans On Encrypted Connections. Forbes. [2018-02-18]. (原始内容于2018-02-18) (英语). 
  8. ^ Prying Eyes: Inside the NSA's War on Internet Security. Spiegel Online. 2014-12-28 [2017-12-02]. (原始内容于2015-01-24). 
  9. ^ . wikileaks.org. 2017-07-06 [2017-09-25]. (原始内容存档于2017-07-08). 
  10. ^ . [2017-12-02]. (原始内容存档于2017-07-11). 
  11. ^ Service Name and Transport Protocol Port Number Registry. iana.org. [2017-12-02]. (原始内容于2001-06-04). 
  12. ^ Amies, A; Wu, C F; Wang, G C; Criveti, M. Networking on the cloud. IBM developerWorks. 2012 [2017-12-02]. (原始内容于2013-06-14). 
  13. ^ Tatu Ylönen. . 2013-04-02 [2017-12-02]. (原始内容存档于2017-08-20). 
  14. ^ Tatu Ylönen. SSH Port. [2017-12-02]. (原始内容于2017-08-03). 
  15. ^ Nicholas Rosasco and David Larochelle. How and Why More Secure Technologies Succeed in Legacy Markets: Lessons from the Success of SSH (PDF). Quoting Barrett英语Daniel J. Barrett and Silverman, SSH, the Secure Shell: The Definitive Guide, O'Reilly & Associates (2001). Dept. of Computer Science, Univ. of Virginia. [2006-05-19]. (原始内容 (PDF)于2006-06-25). 
  16. ^ . openssh.com. 2004-12-22 [2014-04-27]. (原始内容存档于2013-12-24). 
  17. ^ . [2017-12-02]. (原始内容存档于2007-09-27). 
  18. ^ RFC 4253, section 5. Compatibility With Old SSH Versions. RFC 4253. IETF Network Working Group. 2006-01 [2017-12-02]. (原始内容于2018-03-01). 

外部連結 编辑

  • OpenSSH组织的网站(页面存档备份,存于互联网档案馆
  • RFC4251:The Secure Shell (SSH) Protocol Architecture

secure, shell, 重定向至此, 關於简称为, 的web开发框架, 詳見struts, spring, framework或hibernate, 安全外壳协议, protocol, 简称ssh, 是一种加密的网络传输协议, 可在不安全的网络中为网络服务提供安全的传输环境, ssh通过在网络中建立安全隧道, 英语, secure, channel, 来实现ssh客户端与服务器之间的连接, ssh最常见的用途是远程登录系统, 人们通常利用ssh来传输命令行界面和远程执行命令, ssh使用频率最高的场合是类un. SSH 重定向至此 關於简称为 SSH 的Web开发框架 詳見struts Spring Framework或Hibernate 安全外壳协议 Secure Shell Protocol 简称SSH 是一种加密的网络传输协议 可在不安全的网络中为网络服务提供安全的传输环境 1 SSH通过在网络中建立安全隧道 英语 secure channel 来实现SSH客户端与服务器之间的连接 2 SSH最常见的用途是远程登录系统 人们通常利用SSH来传输命令行界面和远程执行命令 SSH使用频率最高的场合是类Unix系统 但是Windows操作系统也能有限度地使用SSH 2015年 微软宣布将在未来的操作系统中提供原生SSH协议支持 3 Windows 10 1803版本已提供OpenSSH工具 4 在设计上 SSH是Telnet和非安全shell的替代品 Telnet和Berkeley rlogin 英语 rlogin rsh rexec 英语 Remote Process Execution 等协议采用明文传输 使用不可靠的密码 容易遭到监听 嗅探和中间人攻击 5 SSH旨在保证非安全网络环境 例如互联网 中信息加密完整可靠 不过 SSH也被指出有被嗅探甚至解密的漏洞 早在2011年 中國的網際網路審查機構已經有能力針對SSH連線的刺探及干擾 6 7 而後爱德华 斯诺登泄露的文件也指出 美国国家安全局有时能够把SSH协议传输的信息解密出来 从而读出SSH会话的传输内容 8 2017年7月6日 非营利组织維基解密确认美国中央情报局已经开发出能够在Windows或Linux操作系统中窃取SSH会话的工具 9 目录 1 概述 2 密钥管理 3 应用 4 历史 4 1 1 x版本 4 2 OpenSSH和OSSH 4 3 2 x版本 4 4 1 99版 5 基本架構 6 SSH的安全验证 7 SSH协议的可扩展性 8 参考文献 9 外部連結概述 编辑SSH以非对称加密实现身份验证 2 身份验证有多种途径 例如其中一种方法是使用自动生成的公钥 私钥对来简单地加密网络连接 随后使用密码认证进行登录 另一种方法是人工生成一对公钥和私钥 通过生成的密钥进行认证 这样就可以在不输入密码的情况下登录 任何人都可以自行生成密钥 公钥需要放在待访问的电脑之中 而对应的私钥需要由用户自行保管 认证过程基于生成出来的私钥 但整个认证过程中私钥本身不会传输到网络中 SSH协议有两个主要版本 分别是SSH 1和SSH 2 无论是哪个版本 核实未知密钥来源都是重要的事情 因为SSH只验证提供用户是否拥有与公钥相匹配的私钥 只要接受公钥而且密钥匹配服务器就会授予许可 这样的话 一旦接受了恶意攻击者的公钥 那么系统也会把攻击者视为合法用户 密钥管理 编辑在类Unix系统中 已许可登录的公钥通常保存在用户 home 目录的 ssh authorized keys 文件中 10 该文件只由SSH使用 当远程机器持有公钥 而本地持有对应私钥时 登录过程不再需要手动输入密码 另外为了额外的安全性 私钥本身也能用密码保护 私钥会保存在固定位置 也可以通过命令行参数指定 例如ssh命令的 i 选项 ssh keygen是生成密钥的工具之一 SSH也支持基于密码的身份验证 此时密钥是自动生成的 若客户端和服务端从未进行过身份验证 SSH未记录服务器端所使用的密钥 那么攻击者可以模仿服务器端请求并获取密码 即中间人攻击 但是密码认证可以禁用 而且SSH客户端在发现新密钥或未知服务器时会向用户发出警告 应用 编辑SSH的经典用途是登入到远程电脑中执行命令 除此之外 SSH也支持隧道协议 端口映射和X11连接 借助SFTP或SCP协议 SSH还可以传输文件 2 SSH使用客户端 服务器模型 标准端口为22 11 服务器端需要开启SSH守护进程以便接受远端的连接 而用户需要使用SSH客户端与其建立连接 大多数现代操作系统 包括macOS 大部分Linux OpenBSD FreeBSD Solaris等系统 都提供了SSH 包括Windows系统也提供SSH程序 在Windows 10 1809版本之后 在软件层次 许多关于SSH的专有软件 免費軟體和开源软件被研发出来 如 文件管理软件 同步 复制 删除等 如 PuTTY和Windows下的WinSCP 类Unix系统下的Konqueror等 SSH客户端 从云计算的角度上讲 SSH能够阻止一些因直接暴露在互联网而产生的安全问题 在解决连接问题上发挥了重要作用 SSH隧道可以在互联网 防火墙和虚拟机之间提供一个安全的通道 12 历史 编辑1 x版本 编辑 芬兰赫尔辛基理工大学的塔图 于勒宁发现自己学校存在嗅探密码的网络攻击 便于1995年编写了一套保护信息传输的程序 并称其为 secure shell 简称SSH 13 设计目标是取代先前的rlogin 英语 rlogin Telnet FTP 14 和rsh等安全性不足的协议 1995年7月 于勒宁以免費軟體的形式将其发布 程序很快流行起来 截至1995年底 SSH的用户数已经达到两万 遍布五十个国家 1995年12月 于勒宁创立了SSH通信安全公司来继续开发和销售SSH SSH的早期版本用到了很多自由软件 例如GNU libgmp 但后来由SSH公司发布的版本逐渐变成了专有软件 截至2000年 已经有两百万用户使用SSH 15 OpenSSH和OSSH 编辑 1999年 开发者们希望使用自由版本的SSH 于是重新使用较旧的1 2 12版本 这也是最后一个采用开放源代码许可的版本 随后瑞典程序员Bjorn Gronvall基于这个版本开发了OSSH 不久之后 OpenBSD的开发者又在Gronvall版本的基础上进行了大量修改 形成了OpenSSH 并于OpenBSD 2 6一起发行 从该版本开始 OpenSSH又逐渐移植到了其他操作系统上面 16 截至2005年 OpenSSH是唯一一种最流行的SSH实现 而且成为了大量操作系统的默认组件 而OSSH已经过时 17 OpenSSH仍在维护 而且已经支持SSH 2协议 从7 6版开始 OpenSSH不再支持SSH 1协议 2 x版本 编辑 2006年 SSH 2协议成为了新的标准 与SSH 1相比 SSH 2进行了一系列功能改进并增强了安全性 例如基于迪菲 赫爾曼密鑰交換的加密和基于訊息鑑別碼的完整性检查 SSH 2还支持通过单个SSH连接任意数量的shell会话 SSH 2协议与SSH 1不兼容 由于更加流行 一些实现 例如lsh和Dropbear 只支持SSH 2协议 1 99版 编辑 RFC 4253规定支持2 0及以前版本SSH的SSH服务器应将其原始版本标为 1 99 18 1 99 并不是实际的软件版本号 而是为了表示向下兼容 基本架構 编辑SSH协议框架中最主要的部分是三个协议 传输层协议 The Transport Layer Protocol 传输层协议提供服务器认证 数据机密性 信息完整性等的支持 用户认证协议 The User Authentication Protocol 用户认证协议为服务器提供客户端的身份鉴别 连接协议 The Connection Protocol 连接协议将加密的信息隧道复用成若干个逻辑通道 提供给更高层的应用协议使用 同时还有为许多高层的网络安全应用协议提供扩展的支持 各种高层应用协议可以相对地独立于SSH基本体系之外 并依靠这个基本框架 通过连接协议使用SSH的安全机制 SSH的安全验证 编辑在客户端来看 SSH提供两种级别的安全验证 第一种级别 基于密碼的安全验证 知道帐号和密碼 就可以登录到远程主机 并且所有传输的数据都会被SSH传输层协议加密 但是 可能会有别的服务器在冒充真正的服务器 但只要客户端校验主机公钥 在服务器私钥不泄露的前提下就能避免被 中间人 攻击 第二种级别 基于密钥的安全验证 需要依靠密钥 也就是你必须为自己创建一对密钥 并把公钥放在需要访问的服务器上 客户端软件会向服务器发出请求 请求用你的私钥进行安全验证并发送使用私钥对会话ID等信息的签名 服务器收到请求之后 先在你在该服务器的用户根目录下寻找你的公钥 然后把它和你发送过来的公钥进行比较 并用公钥检验签名是否正确 如果两个密钥一致 且签名正确 服务器就认为用户登录成功 在服务器端来看 SSH也提供安全验证 服务器将自己的公钥分发给相关的客戶端 并将密钥交换过程中的公开信息与协商密钥的哈希值的签名发送给客戶端 客户端将获取的服务器公钥计算指纹并与其他安全信道获得的公钥指纹相比对并验证主机签名 存在一个密钥认证中心 所有提供服务的主机都将自己的公钥提交给认证中心 公钥认证中心给服务端颁发证书 而任何作为客戶端的主机则只要保存一份认证中心的公钥就可以了 在这种模式下 服务器会发送认证中心提供给主机的证书与主机对密钥交换过程中公开信息的签名 客户端只需要验证证书的有效性并验证签名 SSH协议的可扩展性 编辑SSH协议框架中设计了大量可扩展项 比如用户自定义算法 客户自定义密钥规则 高层扩展功能性应用协议 这些扩展大多遵循IANA的有关规定 特别是在重要的部分 像命名规则和消息编码方面 参考文献 编辑 The Secure Shell SSH Protocol Architecture RFC 4251 IETF Network Working Group 2006 01 2017 12 02 原始内容存档于2018 10 10 2 0 2 1 2 2 The Secure Shell SSH Authentication Protocol RFC 4252 IETF Network Working Group 2006 01 2017 12 02 原始内容存档于2017 11 19 Peter Bright Microsoft bringing SSH to Windows and PowerShell Ars Technica 2015 06 02 2017 12 02 原始内容存档于2017 06 09 maertendMSFT OpenSSH in Windows docs microsoft com 2019 05 11 原始内容存档于2019 05 11 美国英语 SSH Hardens the Secure Shell 页面存档备份 存于互联网档案馆 Serverwatch com 中国刺探加密连接测试新屏蔽方式 www solidot org 2011 11 21 2021 10 24 原始内容存档于2020 07 07 Greenberg Andy China s Great Firewall Tests Mysterious Scans On Encrypted Connections Forbes 2018 02 18 原始内容存档于2018 02 18 英语 Prying Eyes Inside the NSA s War on Internet Security Spiegel Online 2014 12 28 2017 12 02 原始内容存档于2015 01 24 BothanSpy wikileaks org 2017 07 06 2017 09 25 原始内容存档于2017 07 08 SSH setup manual 2017 12 02 原始内容存档于2017 07 11 Service Name and Transport Protocol Port Number Registry iana org 2017 12 02 原始内容存档于2001 06 04 Amies A Wu C F Wang G C Criveti M Networking on the cloud IBM developerWorks 2012 2017 12 02 原始内容存档于2013 06 14 Tatu Ylonen The new skeleton key changing the locks in your network environment 2013 04 02 2017 12 02 原始内容存档于2017 08 20 Tatu Ylonen SSH Port 2017 12 02 原始内容存档于2017 08 03 Nicholas Rosasco and David Larochelle How and Why More Secure Technologies Succeed in Legacy Markets Lessons from the Success of SSH PDF Quoting Barrett 英语 Daniel J Barrett and Silverman SSH the Secure Shell The Definitive Guide O Reilly amp Associates 2001 Dept of Computer Science Univ of Virginia 2006 05 19 原始内容存档 PDF 于2006 06 25 OpenSSH Project History and Credits openssh com 2004 12 22 2014 04 27 原始内容存档于2013 12 24 OSSH Information for VU 419241 2017 12 02 原始内容存档于2007 09 27 RFC 4253 section 5 Compatibility With Old SSH Versions RFC 4253 IETF Network Working Group 2006 01 2017 12 02 原始内容存档于2018 03 01 外部連結 编辑SSH Communications Security Corporation的网站 OpenSSH组织的网站 页面存档备份 存于互联网档案馆 IANA的标准及组织 RFC4251 The Secure Shell SSH Protocol Architecture 取自 https zh wikipedia org w index php title Secure Shell amp oldid 75221869, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。