ssh协议是什么

乐多 2022-03-01 00:52:49
问答

SSH是Secure SHell的缩写,由 IETF 的网络小组(Network Working Group)所制定,叫做安全外壳协议,是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。

SSH 是 Secure SHell 的缩写,由 IETF 的网络小组(Network Working Group)所制定,叫做安全外壳协议,是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议,主要为远程登录会话和其他网络服务提供安全性的协议。

ssh 安全外壳协议

主要功能:类似 telnet 的远程联机使用 shell 的服务器,即 ssh;类似 FTP 服务的 sftp-server ,提供更安全的 FTP 服务。

ssh 工作原理

工客户端主动联机请求: 若客户端想要联机到 ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, putty 等客户端程序连接。

服务器传送公钥给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的)。

客户端记录并比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的 ~/.ssh/known_hosts 。若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥, 则开始计算客户端自己的公私钥。

回传客户端的公钥到服务器端: 用户将自己的公钥传送给服务器。此时服务器:具有服务器的私钥与客户端的公钥,而客户端则是: 具有服务器的公钥以及客户端自己的私钥,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称加密系统

开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密 (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全。

SSH 主要有三部分组成

传输层协议 [SSH-TRANS] 提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在 TCP/IP 连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。

用户认证协议 [SSH-USERAUTH] 用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当 SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希 H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。

连接协议 [SSH-CONNECT] 将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。

认证方式

基于口令的认证:这个就不用说了,就是输入用户名和密码。

基于密钥的认证,具体步骤如下:

(1).客户端建立两把钥匙(公钥与私钥)

(2).将公钥数据上传到服务器上

(3).将公钥放置服务器端的正确目录与文件名(scp 或 ssh-copy-id)

对于 SSH 这样以提供安全通讯为目标的协议,其中必不可少的就是一套完备的密钥机制。由于 SSH 协议是面向互联网网络中主机之间的互访与信息交换,所以主机密钥成为基本的密钥机制。也就是说,SSH 协议要求每一个使用本协议的主机都必须至少有一个自己的主机密钥对,服务方通过对客户方主机密钥的认证之后,才能允许其连接请求。一个主机可以使用多个密钥,针对不同的密钥算法而拥有不同的密钥,但是至少有一种是必备的,即通过 DSS 算法产生的密钥。

SSH 主机密钥认证

每一个主机都必须有自己的主机密钥,密钥可以有多对,每一对主机密钥对包括公开密钥和私有密钥。在实际应用过程中怎样使用这些密钥,并依赖它们来实现安全特性呢?如上图所示,SSH 协议框架中提出了两种方案。

在第一种方案中,主机将自己的公用密钥分发给相关的客户机,客户机在访问主机时则使用该主机的公开密钥来加密数据,主机则使用自己的私有密钥来解密数据,从而实现主机密钥认证,确定客户机的可靠身份。在图 2(a)中可以看到,用户从主机 A 上发起操作,去访问,主机 B 和主机 C,此时,A 成为客户机,它必须事先配置主机 B 和主机 C 的公开密钥,在访问的时候根据主机名来查找相应的公开密钥。对于被访问主机(也就是服务器端)来说则只要保证安全地存储自己的私有密钥就可以了。

在第二种方案中,存在一个密钥认证中心,所有系统中提供服务的主机都将自己的公开密钥提交给认证中心,而任何作为客户机的主机则只要保存一份认证中心的公开密钥就可以了。在这种模式下,客户机在访问服务器主机之前,还必须向密钥认证中心请求认证,认证之后才能够正确地连接到目的主机上。

很显然,第一种方式比较容易实现,但是客户机关于密钥的维护却是个麻烦事,因为每次变更都必须在客户机上有所体现;第二种方式比较完美地解决管理维护问题,然而这样的模式对认证中心的要求很高,在互联网络上要实现这样的集中认证,单单是权威机构的确定就是个大麻烦,有谁能够什么都能说了算呢?但是从长远的发展来看,在企业应用和商业应用领域,采用中心认证的方案是必要的。

另外,SSH 协议框架中还允许对主机密钥的一个折中处理,那就是首次访问免认证。首次访问免认证是指,在某客户机第一次访问主机时,主机不检查主机密钥,而向该客户都发放一个公开密钥的拷贝,这样在以后的访问中则必须使用该密钥,否则会被认为非法而拒绝其访问。

认证阶段

1. 客户端向服务器端发送认证请求,认证请求中包含用户名、认证方法、与该认证方法相关的内容(如:password 认证时,内容为密码)。

2. 服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。

3. 客户端从认证方法列表中选取一种认证方法再次进行认证。

4. 该过程反复进行, 直到认证成功或者认证次数达到上限, 服务器关闭连接为止。

SSH 提供两种认证方

1. password 认证:客户端向服务器发出 password 认证请求,将用户名和密码加密后发送给服务器;服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。

2. publickey 认证:采用数字签名的方法来认证客户端。目前,设备上可以利用 RSA 和 DSA 两种公共密钥算法实现数字签名。客户端发送包含用户名、公共密钥和公共密钥算法的 publickey 认证请求给服务器端。服务器对公钥进行合法性检查,如果不合法,则直接发送失败消息;否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息。

SSH2.0 还提供了 password-publickey 认证和 any 认证。

1. password-publickey 认证:指定该用户的认证方式为 password 和 publickey 认证同时满足。客户端版本为 SSH1 的用户只要通过其中一种认证即可登录;客户端版本为 SSH2 的用户必须两种认证都通过才能登录。

2. any 认证:指定该用户的认证方式可以是 password,也可以是 publickey。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • WinSCP

    WinSCP, 为Windows设计的SSH图形化SFTP客户端

    WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。适合各级用户,尤其对处理敏感数据的用户来说,其安全性和易用性是其主要优势。
  • SecureCRT

    SecureCRT,跨平台SSH客户端软件

    SecureCRT是一款专业级SSH客户端,提供安全的远程访问功能。它支持多种加密协议和认证方法,确保连接安全。功能强大的会话管理和自动化脚本大大提升工作效率。界面直观,易于上手,且高度可定制。虽为付费软件,但其高级功能和稳定性使其成为系统管理员和网络工程师的理想选择,是远程管理工作的高效工具。
  • PuTTY

    PuTTY,经典开源的SSH远程登录客户端

    PuTTY是一个免费开源的远程访问工具,主要用于通过SSH、Telnet等协议安全连接到远程服务器。以简洁的用户界面、强大的协议支持和高安全性著称,尤其适合专业用户和系统管理员。虽然界面不如某些现代化工具丰富,但PuTTY在基本远程管理任务中表现出色,非常适合需要频繁进行SSH连接的用户,特别是对预算有限的个人或小团队尤为理想。
  • DNS 安全性

    DNS SSHFP记录是什么

    SSHFP记录是DNS中的一个安全特性,用于验证远程服务器的SSH密钥指纹,确保其真实性并防止中间人攻击。它需要与DNSSEC一起使用,为SSH连接提供额外的安全验证层。尽管提供了关键的安全增强功能,但如果配置不当,其效果可能会受到影响。
  • unRAID

    unRAID是否支持远程访问和管理

    unRAID支持远程访问和管理。用户可以通过互联网连接到unRAID服务器,并进行远程访问和管理操作。无论是通过Web界面进行文件管理和设置配置,还是通过远程桌面和SSH进行高级管理和定制,unRAID提供了灵活的远程访问选项,满足用户的各种需求。
  • 软路由 NanoPi R6S

    如何远程控制软路由

    远程控制软路由需要保证网络的稳定性和安全性。建议使用安全的网络连接方式,如VPN或SSH隧道,以防止数据被窃取或篡改。同时,要注意软路由管理界面的登录信息和密码的安全性,以避免被不法分子攻击。