0 简介

OpenSSH (http://www.OpenSSH.com) 已成为远程管理UNIX类系统和许多网络设备的标准工具。然而,大多数系统管理员只使用获得命令行所需的最基本OpenSSH功能。OpenSSH有许多强大的功能,如果你花时间去了解它们,系统管理会变得更容易。

0.1 谁需要阅读本书?

每个管理类UNIX系统的人都必须了解SSH。OpenSSH是最常用的SSH实现。

非系统管理员但必须通过SSH连接服务器的人也会发现本书很有帮助。虽然你可以在五分钟内学会SSH的基础知识,但正确使用SSH会让你的工作更轻松、更快捷。

0.2 SSH的组件

安全外壳(SSH Secure shell)是一种在两台联网主机之间创建加密通信通道的协议。SSH保护两台机器之间的数据传输,使其他人无法窃听。Tatu Ylönen于 1995年创建了最初的协议和实施方案,旨在取代telnet、RSH和rlogin等不安全的协议。随着1999年OpenSSH的发布,SSH迅速成为管理主机的标准方法。如今,许多不同的软件包都依赖SSH协议在私人、公共和敌对网络中进行加密和认证数据传输。

0.2.1 OpenSSH

OpenSSH是SSH协议部署最广泛的实施方案。它最初是原始SSH软件免费授权版本的一个分支,后来经过大量改写、扩展和更新。OpenSSH 是OpenBSD项目的一部分,该项目以编写安全软件而闻名。OpenSSH是Linux和BSD世界的标准SSH实现,也用于HP、Cisco、Oracle、Novell、Juniper、IBM 等大公司的产品中。

OpenSSH有两个版本:OpenBSD和Portable OpenSSH。OpenSSH的主要开发工作是作为OpenBSD的一部分进行的。他们要求OpenSSH与OpenBSD 的其他部分一样,采用简单、安全的代码标准。这个版本的 OpenSSH 小巧而安全,但只支持OpenBSD。OpenSSH可移植性团队采用了OpenBSD 版本,并添加了必要的粘合剂,使 OpenSSH能够在其他操作系统上运行,从而创建了可移植OpenSSH。不同的操作系统不仅使用不同的编译器、库等,它们的身份验证系统也各不相同。Portable OpenSSH团队需要考虑每个平台上的所有这些差异。他们尽力隐藏这种复杂性,因此您不必担心。本书适用于这两个版本。

任何操作系统都可能自带OpenSSH,或者操作系统供应商提供了一个软件包。甚至微软也在其Linux层中提供了OpenSSH软件包,而且最近还出现了一个本地端口的测试版,作为可选的 Windows 组件。如果您的操作系统没有提供OpenSSH软件包,请从 http://www.OpenSSH.com 下载Portable OpenSSH 源代码,并按照说明构建软件。

OpenSSH采用BSD式许可证。您可以将其用于任何目的,没有任何附加条件。如果OpenSSH出错,您不能起诉软件作者,也不能声称OpenSSH 是您编写的,但您可以以任何方式使用它,包括将它添加到自己的产品中。安装或支持 OpenSSH 可以收费,但软件本身是免费的。

0.2.1.1 SSH Server

SSH服务器在网络上监听传入的SSH请求,验证这些请求,并提供系统命令提示(或其他由你配置的服务)。最常用的SSH服务器是 OpenSSH的sshd。

0.2.1.2 SSH Client

使用SSH客户端连接远程服务器或网络设备。Windows系统最流行的 SSH 客户端是MobaXterm、PuTTY。类Unix系统的标准SSH客户端是 OpenSSH的ssh。在Windows 10版本中,微软已经集成了OpenSSH客户端,使得在Windows上使用SSH变得更加便捷。

0.2.2 SSH协议

SSH协议有两个版本:SSH-1(版本1)和SSH-2(版本2)。请始终使用SSH-2。所有现代SSH软件默认使用版本2。以今天的计算能力,SSH-1非常容易受到攻击。虽然SSH-1会对传输中的数据进行加密并防止随意窃听,但攻击者只要掌握一些技巧,就能捕获你的数据、在传输中解密你的数据、让你误以为自己登录了正确的机器而实际上连接的是另一台主机、在数据流中插入任意文本,或将这些攻击组合起来。攻击SSH-1数据流并不是一个简单的点击过程,但入侵者确实在现实世界中破解了SSH-1。如果客户端或服务器允许使用 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-2是现代标准。该协议的设计目的是在发现漏洞时能迅速解决。我们不断增强的计算能力使今天的强加密成为明天的安全隐患,因此SSH-2的设计使其算法和协议可以就地升级。

SCP和SFTP等协议都建立在SSH之上。

参考资料

  • 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
  • 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
  • python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
  • Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html

0.2 本书内容

本书旨在让你熟悉SSH,并帮助你达到使用OpenSSH和PuTTY的最低能力水平。这意味着不需要密码,将SSH服务限制在最低必要权限内,并将SSH用作常用管理工具的传输工具。你将能够轻松地通过SSH复制文件,以最少的麻烦管理服务器密钥,使用数字证书只允许在网络上使用经批准的密钥,以及其他一些技巧。

本书并非一本全面的SSH大书。它不包括将SSH与Kerberos或 ecurID集成,或将SSH安装与Google authenticator挂钩,或将SSH代理用作第三方程序的身份验证源。这些都是有趣的话题,但非常针对具体平台,而且很可能在你读完本书之前就会改变。对身份验证选项感兴趣的系统管理员可参考《PAM Mastery》。

SSH可让系统管理员安全地管理远程系统。它功能强大、复杂而又令人困惑。本书将把你从数十年如一日的过时在线教程中解救出来,让你迅速成为SSH的行家里手。

0.3 章节介绍

  • 第0章:导言。

  • 第1章”加密和密钥”介绍了加密的基本信息以及SSH如何使用加密。

  • 第2章”常用配置”介绍了整个OpenSSH服务器和客户端使用的配置语法。

  • 第3章”OpenSSH 服务器”

讨论 OpenSSH服务器sshd的配置。本章将指导你如何配置 sshd,但更具体的示例将贯穿本书始终。

  • 第4章”主机密钥验证”

讲述了使用任何SSH客户端时经常被忽视但又至关重要的部分:验证服务器密钥。这个主题非常重要,甚至在我们第一次讨论SSH客户端之前就需要有自己的一章。

  • 第5章”SSH客户端”

讨论了两种流行的 SSH 客户端,即用于Unix系统的 OpenSSH ssh和用于Windows系统的 PuTTY。

  • 第6章”通过SSH复制文件”

介绍使用SSH作为传输方式,通过SCP(安全复制)和SFTP(SSH文件传输)协议在网络上移动文件。

  • 第7章”SSH 密钥”

将指导你创建个人密钥对(公钥和私钥)。密钥对使身份验证更加安全。如果与代理结合使用,就不需要经常输入密码,但不会降低 SSH 的安全性。

  • 第8章 “X转发”将教你如何在SSH连接上显示图形,同时最大限度地降低风险。

  • 第9章 “端口转发”介绍如何将SSH用作通用的TCP/I 代理,让你可以通过网络将任意网络连接重定向到远程机器。

  • 第10章”保持SSH会话开放”

介绍了如何在防火墙、代理服务器和不可靠的互联网服务提供商希望在几分钟或几小时后关闭会话的情况下,保持SSH会话的运行。

  • 第11章 “密钥分发”

告诉系统管理员如何自动分发主机密钥并提高安全性,同时消除用户手动比较主机密钥指纹的需要。我们还介绍了在大型云系统中分发用户公钥的问题。

  • 第12章”自动化”

讨论了如何将SSH用作自动化工具和严格控制的用户任务的传输工具,以及如何创建单一用途的用户密钥。

  • 第13章”OpenSSH VPN”

演示如何使用OpenSSH在两个站点之间创建加密隧道。

  • 第14章”证书颁发机构”

将指导你创建一个证书颁发机构,只允许授权用户密钥登录网络。

钉钉或微信号: pythontesting 微信公众号:pythontesting