Secure Shell是什么

Fanly问答2020-09-06 19:50:22阅读(...)

Secure Shell是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH最常见的用途是远程登录系统。

Secure Shell 是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH 通过在网络中创建安全隧道来实现 SSH 客户端与服务器之间的连接。SSH 最常见的用途是远程登录系统,人们通常利用 SSH 来传输命令行界面和远程执行命令。

Secure Shell

SSH 使用频率最高的场合是类 Unix 系统,但是 Windows 操作系统也能有限度地使用 SSH。2015 年,微软宣布将在未来的操作系统中提供原生 SSH 协议支持,Windows 10 1803 版本已提供 OpenSSH 工具。

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

不过,SSH 也被指出有被嗅探甚至解密的漏洞。早在 2011 年,中国的互联网审查机构已经有能力针对 SSH 连线的刺探及干扰。而后爱德华·斯诺登泄露的文件也指出,美国国家安全局有时能够把 SSH 协议传输的信息解密出来,从而读出 SSH 会话的传输内容。2017 年 7 月 6 日,非营利组织维基解密确认美国中央情报局已经开发出能够在 Windows 或 Linux 操作系统中窃取 SSH 会话的工具。

概述

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

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

密钥管理

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

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

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

应用

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

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

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

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

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

收藏0个人收藏
走进科技生活方式

评论交流

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