SSH
SSH即安全外壳
Secure Shell(SSH)是一种加密 网络协议,用于在不安全的网络上安全地运行网络服务。[1] SSH的标准TCP端口是22.最着名的示例应用程序是用户远程登录到计算机系统。
SSH 在客户端 - 服务器体系结构中通过不安全的网络提供安全通道,将SSH客户端应用程序与SSH服务器连接。[2] 常见应用程序包括远程命令行登录和远程命令执行,但可以使用SSH保护任何网络服务。协议规范区分了两个主要版本,称为SSH-1和SSH-2。
该协议最明显的应用是在类Unix操作系统上访问shell帐户,但它在Windows上也看到了一些有限的用途。2015年,微软宣布他们将在未来版本中包含对SSH的本机支持。[3]
SSH被设计为替换Telnet和不安全的远程shell协议,例如Berkeley rlogin,rsh和rexec协议。这些协议以明文形式发送信息,特别是密码,使得它们易于使用数据包分析进行拦截和泄露。[4] SSH使用的加密旨在通过不安全的网络(如Internet)提供数据的机密性和完整性,尽管Edward Snowden泄露的文件表明国家安全局有时可以解密SSH,允许他们读取SSH会话的内容。[5]
SSH使用公钥加密来验证远程计算机,并允许它在必要时对用户进行身份验证。[2]有几种方法可以使用SSH; 一种是使用自动生成的公钥 - 私钥对简单地加密网络连接,然后使用密码验证登录。
另一种方法是使用手动生成的公钥 - 私钥对来执行身份验证,允许用户或程序登录而无需指定密码。在这种情况下,任何人都可以生成一对匹配的不同密钥(公共和私有)。公钥放在所有必须允许访问匹配私钥的所有者的计算机上(所有者保密私钥)。虽然身份验证基于私钥,但密钥本身在身份验证期间永远不会通过网络传输。SSH仅验证提供公钥的同一人是否也拥有匹配的私钥。在SSH的所有版本中它来验证未知是重要的公共密钥,即关联与身份的公共密钥,在接受它们之前有效。在未经验证的情况下接受攻击者的公钥会将未经授权的攻击者授权为有效用户。