原文链接 SSH vs SSL/TLS -- What are Differences and Similarities?
原文链接 https://blog.bytebytego.com/i/147477047/how-does-ssh-work
目录
[SSH 是什么?](#SSH 是什么?)
[1,建立连接(Establishing a Connection):](#1,建立连接(Establishing a Connection):)
[2,服务器身份验证(Server Authentication):](#2,服务器身份验证(Server Authentication):)
[3,客户端身份验证(Client Authentication):](#3,客户端身份验证(Client Authentication):)
[4,建立加密隧道(Establishing an Encrypted Tunnel):](#4,建立加密隧道(Establishing an Encrypted Tunnel):)
[5,通信和数据完整性(Communication and Data Integrity):](#5,通信和数据完整性(Communication and Data Integrity):)
[1,远程服务器管理(Remote Server Management):](#1,远程服务器管理(Remote Server Management):)
[2,安全文件传输(Secure File Transfer):](#2,安全文件传输(Secure File Transfer):)
[3,端口转发和隧道(Port Forwarding and Tunneling):](#3,端口转发和隧道(Port Forwarding and Tunneling):)
[4,自动化脚本和CI/CD集成(Automated Scripts and CI/CD Integration):](#4,自动化脚本和CI/CD集成(Automated Scripts and CI/CD Integration):)
[1,客户端Hello(Client Hello):](#1,客户端Hello(Client Hello):)
[2,服务器Hello和证书交换(Server Hello and Certificate Exchange):](#2,服务器Hello和证书交换(Server Hello and Certificate Exchange):)
[3,会话密钥协议(Session Key Agreement):](#3,会话密钥协议(Session Key Agreement):)
[4,数据交换和加密(Data Exchange and Encryption):](#4,数据交换和加密(Data Exchange and Encryption):)
总结
虽然SSH和SSL/TLS在创建安全连接方面的作用看起来很相似,但它们的用途非常不同。SSH主要是技术人员的工具。它允许安全登录到远程机器以发出命令、操作文件和管理数据库。另一方面,SSL/TLS是一种加密网站访问者和服务器之间交换数据的机制。它确保敏感信息,如信用卡详细信息和密码,免受中间人攻击。
当然,这两者并不相互排斥。SSH可以使用SSL/TLS作为其安全解决方案的一部分。这些通用协议有多种可能的实现。如今,面对我们面临的所有在线威胁,它们是必要的。这再次提醒我们,在使用在线资源时,我们都需要小心和警惕。
两者不同
SSH和SSL/TLS通常有不同的用途。网络管理员经常使用SSH来完成普通internet用户永远不需要处理的任务。另一方面,普通互联网用户一直在使用SSL/TLS。任何时候有人使用以HTTPS开头的URL的网站,他就在使用SSL/TLS的网站上。
|------------------------------------------|-----------------------------------|
| SSH | SSL/TLS |
| 在TCP端口22上运行。 | 通过TCP端口443操作。 |
| 用于在远程服务器上安全地执行命令。 | 用于客户端和服务器之间的安全通信。 |
| SSH使用用户名/密码(互)认证系统建立安全连接。 | SSL通常使用X.509数字证书进行服务器和客户端身份验证。 |
| SSH基于网络隧道工作。 | SSL是基于数字证书的。 |
| SSH是一种远程协议。 | SSL是一种安全协议。 |
| 用于降低远程服务器登录的安全威胁。 | 它允许在服务器和浏览器之间安全地传输数据,从而保持信息的完整性。 |
| 数据完整性是用SHA、SHA-2、SHA-256等算法来衡量的。 | SSL通过交换数字证书遵循身份验证过程。 |
| SSH遵循由客户端完成的服务器验证、会话密钥生成和客户端身份验证的身份验证过程。 | 使用消息摘要测量数据完整性,并在发送数据之前将其添加到加密数据中。 |
| 配置更复杂,需要设置安全shell访问。 | 相对容易实现安全的网页浏览和电子商务。 |
| 支持端口转发(SSH隧道),实现网络流量从一个端口到另一个端口的安全路由。 | 不支持本机端口转发。 |
| 机器身份(密钥)是自我管理的,通常在组织或安全团队内部处理。 | 数字证书由CA管理,为身份验证提供了更集中的系统。 |
| 在内部安全网络中常见,用于IT和网络管理任务。 | 用于面向外部的应用程序和网站,以保护用户数据。 |
两者相似性
有些人可能会把SSH和SSL搞混,这是可以理解的,因为两者都是以相同字母开头的三个字母缩写。但除了名字之外,他们还有其他相似之处。首先,两种协议都用于保护连接。它们依靠加密来保护在两个网络设备之间传递的数据,以防止未经授权的访问。
身份验证(Authentication):
这两种协议的目的都是创建可靠和安全的连接。他们通过实现身份验证机制来确保只有经过授权的用户或设备才能访问网络或服务器来实现这一点。
PKI:
这两个协议都是围绕公钥基础设施(PKI【Public Key Infrastructure】)构建的,使用数字证书和加密密钥建立安全通信。它们还共享灵活性,允许它们扩展到其主要目的之外------SSH可以支持安全文件传输,SSL/TLS可以保护电子邮件通信和其他非基于web的应用程序。
安全性:
SSH和SSL协议旨在提供高级别安全性。这两种协议都使用身份验证机制和加密,以防止篡改和安全威胁。
灵活性:
这两个协议都很灵活,它们可以用于多种用途。类似地,SSH可以用于安全文件传输和远程管理。另一方面,SSL可用于安全电子邮件通信或非基于web的应用程序。
SSH和SSL/TLS都是采用非对称加密的协议。这些安全协议旨在保护您的个人信息在数据传输过程中的私密性,以及在互联网和公共网络上的安全通信。
SSH(Secure Shell)和SSL/TLS(Secure Sockets Layer / Transport Layer Security)共享相似的安全方面------加密、身份验证和完整性过程。然而,它们有不同的目的。
例如,当您使用SSL/TLS访问网站时,您发送的数据(如登录凭据或付款信息)将被加密以保护隐私。类似地,在远程访问和管理服务器时使用SSH。它确保在设备和服务器之间发送的命令和敏感数据保持私密性。
如果你正在研究SSH与SSL/TLS,这里我们将分解SSH与SSL/TLS之间的异同,以阐明每种协议的工作原理。
SSH 是什么?
SSH (Secure Shell)是一种加密的网络协议,它允许在不安全的网络上进行安全的数据通信。与Telnet或FTP传输协议以其原生(明文)状态传输数据相比,SSH对数据进行加密,因此诸如登录凭据、命令或文件等敏感信息可以可靠地传输。它广泛用于系统管理,允许管理员通过安全连接连接到服务器和设备、执行命令、传输文件和管理资源。
SSH如何工作?
当客户端(笔记本电脑或终端)使用SSH连接到远程服务器时,该客户端要经过一些身份验证和加密步骤,以确保通信是安全的。
搭配着 ByteByteGo的这个图看,就更清晰了
1,建立连接(Establishing a Connection):
每当SSH客户端建立连接时,它都会在指定的端口(端口号:22)上与SSH服务器通信。
客户机和服务器都交换有关受支持的加密和压缩算法的信息,以确保它们是兼容的。
2,服务器身份验证(Server Authentication):
服务器向客户端发送一个公钥,然后客户端使用公钥来验证服务器的身份。如果建立了成功的连接,客户端通常会缓存这个密钥,以保证以后连接的安全。
如果服务器的密钥发生意外变化,客户端就会发出警告,从而检测到"中间人"攻击。
3,客户端身份验证(Client Authentication):
SSH允许客户端使用多种方式(如密码或基于密钥的身份验证方法)对自己进行身份验证。
基于密钥的身份验证(Key-Based Authentication):这是最安全、最可取的方式。将创建一对加密密钥(一个公钥存储在服务器上,一个私钥安全地存储在客户端上)。在连接期间,客户端使用其私钥签署数字签名,服务器对存储在服务器上的公钥对象进行验证,无需密码即可访问。
基于密码的身份验证(Password-Based Authentication):该方法更简单,但安全性较差,因为它使用用户必须输入的密码,但在传输过程中仍然是加密的。
4,建立加密隧道(Establishing an Encrypted Tunnel):
认证完成后,SSH采用对称加密方式建立安全的加密通道。
会话密钥由双方商定,并用于为会话加密数据。
该隧道的加密不仅提供机密性(不被窃听),而且提供完整性(保证不被篡改)。
5,通信和数据完整性(Communication and Data Integrity):
SSH使用消息验证码(如HMAC)来确保已传输的数据没有被更改。
通过SSH来回传递的命令、响应和文件都受到这个加密会话的保护。
**示例:**假设管理员想要登录到远程服务器来管理文件。他们在终端中打开SSH客户端,并输入如下命令:
ssh user@remote-server-ip
如果配置SSH客户端使用基于密钥的身份验证,SSH客户端将自动使用存储的私钥进行身份验证。SSH隧道建立并成功登录后,所有命令和文件传输都将在安全的SSH隧道上运行。
下面是SSH握手的示例:
SSH的用途是什么?
由于其多功能性和安全性,SSH已成为现代IT基础设施中的关键工具。下面是一些深入的用例:
1,远程服务器管理(Remote Server Management):
当涉及到管理服务器时,尤其是远程服务器或云服务器,SSH是系统管理员用来访问和使用远程服务器的工具。这意味着他们实际上可以执行必要的维护任务,如更新程序、监视日志和远程配置应用程序。
SSH还允许您在远程服务器上安全地执行脚本,而无需在网络日志中显示命令或数据。
2,安全文件传输(Secure File Transfer):
SSH允许使用SCP(安全复制协议)和SFTP (SSH文件传输协议)在本地和远程机器之间进行文件的安全传输。
然而,两者都使用SSH的加密隧道,在传输过程中文件不能被篡改或拦截。
3,端口转发和隧道(Port Forwarding and Tunneling):
SSH支持端口转发功能,用户可以通过SSH协议安全地对流量进行隧道化。
SSH端口转发有三种类型:
本地端口转发:通过SSH将流量从客户端机器重定向到指定的服务器。
远程端口转发:允许远程服务器将流量转发到客户端。
动态端口转发:作为代理,将流量安全地路由到多个目的地。
4,自动化脚本和CI/CD集成(Automated Scripts and CI/CD Integration):
SSH通过脚本和CI/CD工具在多个服务器上运行任务,无需任何人工干预,从而实现安全自动化。
特别是在自动化环境中,基于密钥的身份验证非常有用,因为它绕过了基于密码的登录。
什么是SSL/TLS?它是如何工作的?
SSL(安全套接字层)和TLS(传输层安全)是一种通过加密从客户端(web浏览器)到其服务器的数据来保护互联网通信的协议。SSL最初是为了保护登录凭据和支付信息等数据而开发的,但它的继任者TLS今天被广泛使用,而SSL被认为是过时的。SSL/TLS连接使用公钥基础设施(PKI)和数字证书为网站交易提供安全性和完整性。
SSL证书有各种好处
加密------它在传输过程中保护数据,使恶意行为者无法读取试图拦截它。
身份验证------它验证数据是否与正确的服务器交换,有助于防止中间人攻击。
数据完整性- SSL确保数据在传输过程中保持完整,防止任何丢失或未经授权的更改。
SSL和TLS使用证书颁发机构生成的数字签名来实现用户和提供者之间的信任关系。一旦建立了连接,就可以安全地传输敏感信息,例如可能在银行与其客户之间传递的信息。HTTPS (Hypertext Transfer Protocol over SSL/TLS)协议使用的标准TCP端口是443。
SSL/TLS如何工作:
如果浏览器连接到启用SSL/TLS的站点,被访问的服务器将其公钥证书发送给客户端进行验证。在使用证书之前,客户端通过尝试使用证书颁发机构(CA)进行验证来检查服务器是否合法。
SSL/TLS在客户机-服务器(client-server )基础模型上运行。在客户端和服务器建立安全连接之前,它们要经历SSL/TLS握手过程。为了更好地理解这一点,让我们以连接到服务器进程的浏览器为例,看看握手过程是如何工作的,特别是在使用RSA算法时。
1,客户端Hello(Client Hello):
当连接启动时,客户端(例如浏览器)向服务器发送"client Hello"消息,提供支持的通信算法、TLS版本和任何其他选项。
2,服务器Hello和证书交换(Server Hello and Certificate Exchange):
服务器发送"Server Hello"消息,并选择要使用的兼容加密方法。它还通过(受信任的)证书颁发机构(CA)发送包含其公钥的数字证书。
该证书然后由客户端与CA验证,这实际上是正确的服务器(例如,一个实际的银行网站)。
3,会话密钥协议(Session Key Agreement):
客户端和服务器都使用非对称加密来安全地交换会话密钥,RSA算法等方法用于此目的。
稍后,此会话密钥用于对称加密,从而允许更快、更安全的数据传输。
4,数据交换和加密(Data Exchange and Encryption):
建立会话密钥之后,在客户机和服务器之间传输的所有数据都被加密,以保持机密性、完整性和真实性。
SSL/TLS还使用哈希算法(如SHA-256)来确认数据完整性,防止篡改。
当你连接到一个安全的网站(例如,你的银行),你的浏览器和网站服务器完成这个握手过程。握手之后,你输入的任何数据------比如你的账户信息------都是加密的,这样就不会被窃听了。
SSL/TLS的用途是什么?
SSL/TLS在确保互联网上交换的数据的安全性和完整性方面起着至关重要的作用。以下是有助于维护安全通信和保护敏感信息的SSL/TLS的一些关键用途:
1,使用HTTPS保护Web流量:
SSL/TLS用于使用HTTPS(超文本传输协议安全)加密web流量。它保证从用户浏览器传输到web服务器的数据(反之亦然)是私有的、完整的和真实的。
通过SSL/ tls认证的网站向用户保证网站是安全的,并在浏览器中标记了挂锁符号,从而提高了可信度。
2,电子邮件加密:
SMTP、IMAP和POP等电子邮件协议使用SSL/TLS对通信进行加密。
这样做有助于保护通过电子邮件发送的敏感信息,如机密文件或私人信息。
3,VPN和远程访问安全:
基于SSL/TLS的加密被许多vpn(虚拟专用网)用来提供远程用户和内部网络之间的加密隧道。
这种设置对于远程工作非常有用,使员工能够从不安全的公共网络安全地访问公司资源。
4,API和应用程序安全性:
应用程序使用SSL/TLS来保护API调用和数据交换------包括那些与外部服务通信的调用和数据交换。
它可以防止中间人攻击,攻击者通过这种攻击拦截或操纵系统之间交换的数据。