利用各种 Unix 环境中可用的工具,今天就来学习使用Unix OpenSSH。您每天使用的标准网络服务(如 FTP、Telnet、RCP 和远程 Shell (rsh) 等)在封闭环境中运行良好,但使用这些服务在网络上传输的信息是未加密的。任何人都可以在您的网络或远程计算机上使用包嗅探器查看交换的信息,有时甚至可以查看密码信息。
而且,使用所有此类服务时,在登录过程中用于自动登录的选项会受到限制,并且通常依赖于将纯文本密码嵌入到命令行才能执行语句,从而使登录过程变得更加不安全。
开发的安全 Shell (SSH) 协议可以排除这些限制。SSH 能够为整个通信通道提供加密,其中包括登录和密码凭据交换,它与公钥和私钥一起使用可以为登录提供自动化身份验证。您还可以将 SSH 用作基础传输协议。以这种方式使用 SSH 意味着在打开安全连接后,加密通道可以交换所有类型的信息,甚至 HTTP 和 SMTP 可以使用该方法来保证通信机制的安全。
Unix OpenSSH 是 SSH 1 和 SSH 2 协议的免费实现。它最初是作为 OpenBSD (Berkeley Software Distribution) 操作系统的一部分开发的,现在被发布为 Unix 或 Linux® 和类似操作系统的常规解决方案。
安装Unix OpenSSH
OpenSSH 是免费软件,可以从Unix OpenSSH 的主要网站下载(请参见参考资料)。可以使用多种系统(包括 Linux、HP-UX、AIX®、Solaris、Mac OS X 等)上的源代码构建Unix OpenSSH 系统。通常可以找到所选平台和版本的预编译二进制代码。有些供应商甚至作为操作系统的一部分提供 OpenSSH 工具包。
要构建Unix OpenSSH,您需要以下内容:
C 编译器(GNU C 编译器 (gcc) 或类似编译器)
Zlib – 压缩库
OpenSSL – 安全套接字层 (SSL) 安全库
如果您需要使用缺省配置设置,请使用常规构建序列,如下面的清单 1 所示。
清单 1. 使用常规构建序列
- $ ./configure
- $ make
- $ make install
这会将二进制文件、库文件和配置文件安装到 /usr/local 目录中,例如,二进制文件安装到 /usr/local/bin,配置文件安装到 /usr/local/etc。如果希望将各种工具集成到主环境中,那么您可能需要指定设置基本目录的 --prefix 选项和设置配置文件位置的 --sysconfdir 选项:$ ./configure --prefix=/usr --sysconfidir=/etc/ssh
您可能指定的一些其他常规选项包括:
--with-tcp-wrappers——如果您希望与 TCP 包装安全系统集成在一起,则此选项是必需的。
--with-ssl-dir=DIR——此选项指定 OpenSSL 库的位置。
--with-pid-dir=DIR——此选项指定 PID 文件的位置,该文件为 sshd 守护进程存储进程 ID。
--with-xauth=DIR——此选项指定用于 X 身份验证的 xauth 命令的位置。
完成配置后,使用 make 以正常方式构建。
构建和安装过程完成后,您需要配置系统,先创建唯一标识系统的 SSH 密钥,然后启用客户机和主机之间的安全通信。您可以运行: $ make host-key
或者,您可以在命令行上手动执行各个步骤。您需要创建三个密钥(每个密钥对应于一个主要加密算法:rsa1、rsa 和 dsa)。例如,清单 2 显示了如何创建 rsa1 密钥。
清单 2.Unix OpenSSH 创建 rsa1 密钥
- $ ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key
- Generating public/private rsa1 key pair.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /etc/ssh//ssh_host_key.
- Your public key has been saved in /etc/ssh//ssh_host_key.pub.
- The key fingerprint is:
- 43:aa:58:3c:d8:30:de:43:af:66:2a:b2:8d:02:08:86 root@remotehost
系统提示您输入密码。对于主机密钥,您可能不需要密钥密码,所以您可以按 Return 使用空密码。或者,您可以在命令行上使用 -N 选项加速该过程(请参见清单 3)。
清单 3. 使用 -N 选项加速过程
- $ ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""
- Generating public/private rsa1 key pair.
- Your identification has been saved in /etc/ssh/ssh_host_key.
- Your public key has been saved in /etc/ssh/ssh_host_key.pub.
- The key fingerprint is:
- a3:e3:21:4f:b5:9f:ff:05:46:66:bc:36:a1:47:a0:64 root@remotehost
现在重复该过程,以创建 rsa 和 dsa 密钥(请参见清单 4)。
清单 4.Unix OpenSSH 创建 rsa 和 dsa 密钥
- $ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
- $ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
这将为每个密钥类型创建两个文件:公钥(在以 .pub 结尾的文件中)和私钥。您应确保私钥仅由根和 SSH 流程读取——这应自动配置。您可能需要将公钥复制到网络文件系统 (NFS) 共享中的中央位置,使人们能够将其添加到已知主机密钥列表中。
***,您需要启动 sshd 过程,并对其进行配置,以便在启动时执行。对于 Linux 主机,您可以在 contrib/redhat/sshd.init 中找到合适的可以添加到 /etc/init.d 的 init 脚本。
这样,Unix OpenSSH就安装完毕了。希望大家好好的学习。
【编辑推荐】