什么是 SSH(安全外壳协议)以及如何工作

安全外壳协议(Secure Shell,简称SSH),旨在取代未加密的协议(如 Telnet 和 RSH)和未受保护的文件传输协议(如 FTP 和 RCP),在两个设备之间提供安全的加密连接。

安全外壳(SSH)是一种网络协议,用户可以通过该协议在未受保护的网络上与目标资源建立安全的远程连接,管理员主要使用 SSH 协议远程登录并访问其网络中的计算机、执行文件传输、执行命令和管理应用程序。

SSH 主要用于连接到 Linux/Unix 设备,因为 SSH 通常作为大多数 Linux 发行版上易于安装的软件包提供,并且只需几个命令即可安装。若要安全地连接到 Windows 设备,通常使用远程桌面协议 (RDP),因为它在 Windows 设备中本机可用。

SSH是如何工作的

SSH 使用客户端-服务器体系结构来建立安全的加密连接,SSH客户端作为一种媒介,促进与SSH服务器的安全连接,并在显示和控制会话的地方运行,服务器是使用该协议访问的目标计算机。一开始,当需要在两台计算机(SSH 客户端和服务器)之间建立连接时,SSH 客户端会通过联系服务器来启动连接。

然后,客户端继续从服务器获取公钥,根据所使用的加密类型,服务器和 SSH 客户端协商参数并建立安全的加密通道。然后,用户可以登录到服务器并执行所需的操作。

  • 从 SSH 客户端尝试 SSH 会话。
  • SSH 客户端会连接到目标服务器。
  • SSH 客户端从 SSH 服务器获取公钥,特别是从 .ssh/authorized_keys 文件中获取公钥。
  • 客户端和服务器协商参数和加密方法,然后使用合适的密钥交换算法制定加密的会话密钥。
  • 然后,用户使用适当的凭据进行身份验证并登录到目标服务器。
  • 现在已建立安全连接,用户可以在服务器上执行操作。

如何启动 SSH 连接

Unix、Linux 和 macOS 设备内置SSH客户端,允许从终端直接启动SSH连接,还可以使用SSH客户端(如PuTTY)启动连接。

但是,如果要从 Windows 设备启动 SSH 连接,则必须使用 OpenSSH 或 PuTTY 等 SSH 客户端来启动连接,另外,可以使用 RDP 协议建立安全的 Windows-Windows 连接。

在服务器端,需要安装 SSH 服务器包,并且需要安装并运行称为 SSH 守护进程的服务器端组件,SSH 守护进程通过侦听 TCP 端口 22 上的所有连接来检查任何 SSH 连接请求。

如果您在 Windows 设备上使用 Linux/macOS 设备或 SSH 客户端,则可以输入以下命令以从设备终端启动与远程服务器的 SSH 连接:

如果使用的是 Linux/macOS设备或Windows设备上的SSH客户端,可以输入以下命令从设备终端启动到远程服务器的SSHl连接:

ssh <user_name>@<host_name>

在与服务器建立连接之后,使用用户帐户的适当凭据对自己进行身份验证,然后,用户可以继续在目标服务器上执行命令、传输文件、管理应用程序等。

SSH 加密方法

主要用于使用 SSH 建立安全连接的加密方法:

  • 对称加密
  • 非对称加密
  • 散列

对称加密

所谓对称,就是采用这种加密方法的双方,使用方式用同样的密钥进行加密和解密,密钥是控制加密及解密过程的指令,算法是一组规则,规定如何进行加密和解密。对称加密通常使用单个共享密钥完成,尽管它也可以使用一对密钥。

当客户端与服务器建立 SSH 连接时,客户端和服务器协商使用密钥交换算法独立生成共享密钥的通用方法,然后使用这个商定的方法来生成共享密钥,然后使用共享密钥对整个会话进行加密,并且后续通信是安全的。

此共享密钥永远不会在客户端和服务器之间通信,因此无法被截获,即使公开了共享密钥,另一台计算机也无法解密通信,因为只有客户端和服务器知道约定的方法。

非对称加密

非对称加密使用公私密钥对建立加密连接,非对称加密的安全机制是双重的。

首先,客户端和服务器都使用合适的算法(如RSA算法)独立生成各自的临时公钥-私钥对。当客户端尝试建立 SSH 连接时,客户端和服务器会相互共享各自的公钥。

之后,基于接收方公钥的加密身份验证消息从发送方发送到接收方。这样做是为了验证客户端的身份。然后,接收方使用接收方的私钥对加密的身份验证消息进行解密,然后对身份进行身份验证。

身份验证完成后,计算机使用密钥交换算法生成合适的共享会话密钥,然后使用该算法对通信进行加密。

需要注意的是,私钥仍然是私有的,不会在任何时候在服务器和客户端之间传输。私钥充当接收方解密身份验证消息的身份验证机制,而加密则使用共享密钥进行。

由于私钥不与第三方共享,并且在加密中添加了身份验证层,因此非对称加密被认为是比对称加密更安全的加密方法。

散列

散列是指使用加密散列函数对消息进行加密。这个加密的消息称为Hashing,与对称和非对称形式的加密不同,当使用散列或加密散列函数时,加密消息并不意味着由接收方解密。

但是,如果接收方事先知道未散列的消息,并且使用散列函数进行散列,则接收方可以从散列中验证消息。这使得散列成为用于数据完整性检查和身份验证目的的可靠加密方法。

哈希的加密过程类似于对称加密,但除了共享密钥的协商过程外,还会选择消息身份验证代码 (MAC) 算法。这是基于客户端和服务器的MAC兼容性。之后,一旦建立了安全通信信道,每条消息都会使用MAC进行哈希处理,接收方在计算MAC后验证消息的完整性。这是根据共享密钥、未散列的消息内容和消息的相应数据包序列号完成的。

常用的SSH认证方式

建立 SSH 连接的常用用户身份验证方法有两种类型:密码身份验证和 SSH 密钥身份验证。

密码身份验证

密码身份验证是建立SSH连接时更广泛使用的身份验证方法,共享密钥和加密协商完成后,服务器会提示用户输入客户端正在尝试登录的用户账号的密码。

尽管只有在建立加密连接之后才传输密码,但它仍然可能被暴力破解弱密码、脚本等利用,为了避免这种情况,使用SSH密钥的身份验证被越来越多地采用。

使用 SSH 密钥进行身份验证

使用SSH密钥的身份验证涉及公私非对称SSH密钥对,在对称加密之后,客户端生成密钥对 ID,服务器通过查找用户的.ssh/authorized_keys文件来验证这个ID,如果ID匹配,则使用公钥生成并加密随机数,然后客户端使用其私钥对其解密。

然后,客户端在对称加密期间使用解密的号码和已建立的共享密钥对号码进行散列处理,并以 MD5 哈希值的形式将其发送回服务器,一旦服务器使用相同的共享密钥和数字自行计算 MD5 哈希值并确定其匹配项,身份验证就完成了。

多层密钥的身份验证成为一种更安全的加密形式,因为不传输服务器的私钥,并且还需要共享密钥来篡改身份验证。

为SSH会话添加额外的安全层

鉴于企业大量使用SSH协议在特权远程服务器上执行操作,从中央控制台管理SSH会话以保护敏感数据变得非常重要。尽管SSH连接是安全加密远程会话的标准,但目标资源仍然可能受到特权滥用、数据丢失和其他内部威胁。可通过使用特权访问管理(PAM)解决方案(如PAM360)来管理特权资源和会话来解决。

PAM360 特权访问管理解决方案为组织提供了一个中央控制台来管理其所有特权会话,包括但不限于 SSH 密钥和会话。从监控、隐藏和管理 SSH 会话,到管理、部署和轮换 SSH 密钥,还可提供特权访问、管理和轮换密码、提升访问权限、管理 RDP 会话、执行安全文件传输、管理 SSL/TLS 证书等等。

相关推荐
H轨迹H1 小时前
SolidState靶机通关教程及提权
网络安全·渗透测试·靶机·oscp
D1TAsec3 小时前
Powercat 无文件落地执行技巧,你确定不进来看看?
网络安全
文大。3 小时前
2024年广西职工职业技能大赛-Spring
java·spring·网络安全
风间琉璃""3 小时前
bugkctf 渗透测试1超详细版
数据库·web安全·网络安全·渗透测试·内网·安全工具
儒道易行4 小时前
【DSVW】攻防实战全记录
web安全·网络安全
DexterLien6 小时前
Debian 12 安装配置 fail2ban 保护 SSH 访问
运维·debian·ssh·fail2ban
索然无味io6 小时前
跨站请求伪造之基本介绍
前端·笔记·学习·web安全·网络安全·php
总是学不会.7 小时前
第五篇:前后端如何“扯皮”——HTTP 在开发中的应用
java·网络·网络协议·http·开发
m0_748238278 小时前
WebClient HTTP 请求问题处理模板(泛型响应、忽略 SSL 证书等)
网络协议·http·ssl