OpenSSH是远程管理类Unix系统和许多网络设备的标准工具。然而,大多数系统管理员只使用获取命令行所需的最低OpenSSH功能。
本书以任务为导向。
在过去的15年里,OpenSSH(http://www.OpenSSH.com)已成为远程管理类UNIX系统和许多网络设备的标准工具。然而,大多数系统管理员只使用获取命令行所需的最低OpenSSH功能。OpenSSH有许多强大的功能,如果你花时间理解它们,这些功能将使系统管理更容易。您可以在互联网上找到有关OpenSSH的信息和教程。其中一些写得很差,或者只适用于狭窄的场景。许多都写得很好,但都是十年前的版本,涵盖了九年前软件更新解决的问题。如果你有几天空闲时间,并且知道要问的问题,你可以筛选出糟粕,找到有效的最新教程。
这本以任务为导向的书将为您节省精力和时间,让您为《Castle Wolfenstein》(狼穴——德军总部城堡)的下一个版本做好准备。我假设你使用的是相当新版本的OpenSSH和PuTTY,我忽略了诸如“我20年前的路由器只支持SSH版本1”之类的边缘情况。如果你找到了这本书,你很可能能够在互联网上搜索到非常具体的问题。我不会讨论从源代码构建OpenSSH,也不会讨论如何在50个不同的平台上安装OpenSSH服务器。如果你是系统管理员,你知道在哪里可以找到这些信息。如果您是系统用户,您的系统管理员应该为您安装和配置OpenSSH服务器,但掌握客户端程序将帮助您更快、更有效地工作。
管理类UNIX系统的每个人都必须了解SSH。OpenSSH是最常用的SSH实现。除非您特别使用不同的SSH实现,否则请阅读本书。
非系统管理员但必须通过SSH连接到服务器的人也会发现这本书很有帮助。虽然您可以在五分钟内学习SSH的基础知识,但正确使用SSH将使您的工作更容易、更快。如果愿意,您可以跳过服务器配置部分,尽管了解系统管理员实际可以做什么而不是他们想做什么总是很好的。
SSH——Secure Shell,安全外壳。是一种用于在两个联网主机之间创建加密通信通道的协议。SSH保护两台机器之间的数据传输,使其他人无法窃听。Tatu Ylönen于1995年创建了最初的协议和实现,旨在取代telnet、RSH和rlogin等不安全的协议。1999年OpenSSH发布,SSH迅速成为管理主机的标准方法。如今,许多不同的软件包都依赖SSH协议,在私有、公共和敌对网络之间进行加密和身份验证良好的数据传输。
OpenSSH是部署最广泛的SSH协议实现。它最初是原始SSH软件的自由许可版本的分支,但经过了大量重写、扩展和更新。OpenSSH是OpenBSD项目的一部分,OpenBSD项目是一个以编写安全软件闻名的社区。OpenSSH是Linux和BSD世界中的标准SSH实现,也用于惠普、思科、甲骨文、Novell、Juniper、IBM等大公司的产品中。
OpenSSH有两个版本:OpenBSD 和 Portable OpenSSH 。
所以你不必担心。这本书适用于这两个版本。
任何操作系统都可能附带OpenSSH,或者操作系统供应商提供了一个软件包。甚至微软也在其Linux层提供了一个OpenSSH包。最近一个本地端口的测试版作为可选的Windows组件逃逸。如果您的操作系统不提供OpenSSH软件包,请从以下网址下载便携式OpenSSH源代码http://www.OpenSSH.com并按照说明构建软件。
OpenSSH在BSD风格的许可证下可用。你可以将其用于任何目的,没有任何附加条件。如果OpenSSH崩溃,你不能起诉软件作者,也不能声称你编写了OpenSSH,但你可以以任何方式使用它,包括将其添加到你自己的产品中。您可以收费安装或支持OpenSSH,但软件本身是免费的。
SSH服务器在网络上监听传入的SSH请求,对这些请求进行身份验证,并提供系统命令提示符(或你配置的其他服务)。最流行的SSH服务器是OpenSSH的 sshd 。
使用SSH客户端连接到远程服务器或网络设备。Windows系统中最流行的SSH客户端是PuTTY。类Unix系统的标准SSH客户端是OpenSSH的 ssh(1) 。两者都是免费提供的,可用于任何目的,无论是商业还是非商业,都是免费的。
微软最近还分叉了OpenSSH,在Windows中包含一个SSH客户端。不过,它被认为是实验性的,开发仍在继续。随心所欲地尝试它;它应该像OpenSSH一样工作。它也是Windows Linux子系统的一部分。不过,如果你使用的是Windows原生(Windows-native)SSH,你真的想使用PowerShell而不是传统的终端。
一旦你了解了PuTTY和OpenSSH,你就有了使用任何安全SSH客户端的基础知识。
SSH协议有两个版本,SSH-1(版本1)和SSH-2(版本2)。始终使用SSH-2。所有现代SSH软件默认为版本2。您会发现仍然依赖SSH版本1的旧嵌入式设备,但SSH-1几乎不比未加密的telnet更安全。
一个人根据自己的需要设计了SSH-1。它很好地满足了这些需求,在20世纪90年代,它比telnet要好得多。随着SSH越来越受欢迎,越来越多的人研究了该协议,并暴露了原始设计中的弱点。凭借当今的计算能力,SSH-1极易受到攻击。虽然SSH-1对传输中的数据进行加密并防止随意窃听,但知道一些技巧的攻击者可以捕获您的数据,解密传输中的信息,诱使您认为您在实际连接到不同主机时登录到了正确的计算机,在数据流中插入任意文本,或这些的任意组合。攻击SSH-1数据流并不是一个点击式的过程,但入侵者确实会在现实世界中破坏SSH-1。
安全的外表比没有安全更糟糕。永远不要使用SSH版本1。
允许不支持SSH-2的服务器或客户端使用SSH-1似乎是无害的。然而,客户端和服务器透明地协商他们将用于连接的SSH版本。如果客户端或服务器容忍SSH-1,入侵者可以捕获您的登录凭据和所有传输的数据。在SSH-1会话中插入任意文本(如 rm -rf /* )相当简单。这是在1998年发现的,如今强大的计算能力使这种攻击变得容易得多。SSH-1会话可以通过Ettercap等程序实时解码。SSH-1的增量改进,如SSH 1.3和1.5,很容易受到攻击。提供SSH版本1.99的SSH服务器支持SSH版本1和版本2。
不要让SSH客户端请求SSH-1。不要让你的SSH服务器提供SSH-1。
OpenSSH已经删除了对SSH-1的支持,所以如果你有一个只会说SSH-1语言的旧嵌入式设备,你需要用PuTTY来管理它,或者更好的是,花几美元用本世纪制造的东西替换该设备。
【一些Linux发行版故意提供支持SSH-1的SSH客户端。这是在他们的问题】
SSH-2是现代标准。该协议的设计是为了在发现漏洞时快速解决漏洞。我们不断增长的计算能力使今天的强加密成为明天的安全风险,因此SSH-2的设计使其算法和协议可以就地升级。
SCP和SFTP(第7章)等协议构建在SSH之上。
本书旨在让您熟悉SSH,并帮助您达到OpenSSH和PuTTY的最低能力水平。这意味着消除密码,将SSH服务限制在最低必要的权限范围内,并将SSH用作通用管理工具的传输。您将能够通过SSH轻松复制文件,以最小的麻烦管理服务器密钥,使用数字证书只允许网络上的批准密钥,以及其他一些技巧。
这本书并不是一本全面的SSH巨著。它不包括将SSH与Kerberos或SecurID集成,或将SSH安装挂接到Google身份验证器,或将您的SSH代理用作第三方程序的身份验证源。这些都是有趣的话题,但非常特定于平台,在你读完这本书之前很可能会发生变化。对身份验证选项感兴趣的系统管理员可能会发现我的书《PAM Mastery》(Tilted Windmill Press,2016)很有用。
废话够多了!我们开始工作吧。