OpenSSH 服务器

简介

Ubuntu 服务器指南中的本节内容将介绍一个用于远程控制联网计算机及在联网计算机之间传输数据的功能强大的工具集合,称为 OpenSSH。您还会学到一些可用于 OpenSSH 服务器应用程序的配置设置,以及如何在您的 Ubuntu 系统中改变它们。

OpenSSH 是Secure Shell (SSH) 协议工具集中的一个自由可用的版本,用以远程控制一台计算机或在计算机之间传输文件。完成这些功能的传统工具,如 telnetrcp 等,是不安全的,它们在使用时用明文来传输用户的密码。OpenSSH 提供一个服务器守护程序和客户端工具来保障安全、加密的远程控制和文件传输操作,以有效地取代传统的工具。

OpenSSH 服务器组组件 sshd 持续监听来自任何客户端工具的连接请求。当一个连接请求发生时,sshd 根据客户端连接的类型来设置当前连接。例如,如果远程计算机是通过 ssh 客户端应用程序来连接的话,OpenSSH 服务器将在认证之后设置一个远程控制会话。如果一个远程用户通过 scp 来连接 OpenSSH 服务器,OpenSSH 服务器将在认证之后开始服务器和客户机之间的安全文件拷贝。OpenSSH 可以支持多种认证模式,包括纯密码、公钥以及Kerberos 票据。

安装

OpenSSH 客户端及服务器应用程序的安装是简单的。要在您 Ubuntu 系统中安装 OpenSSH 客户端应用程序,可以在终端提示符后使用以下命令:

sudo apt-get install openssh-client

要安装 OpenSSH 服务器应用程序及相关的支持文件,可以在终端提示符后使用以下命令:

sudo apt-get install openssh-server

配置

您可以通过编辑 /etc/ssh/sshd_config 文件来配置 OpenSSH 服务器应用程序的缺省过程。关于该文件中使用的配置语句信息,您可以在终端提示符后运行下列命令来查阅相应的手册页:

man sshd_config

sshd 配置文件中有许多语句来控制那些诸如通信设置和认证模式。下面是一个通过编辑 /etc/ssh/ssh_config 文件来改变配置语句的例子。

[提示]

在编辑配置文件之前,您应该生成一个原始文件的拷贝并对其写保护,以便您可以参考原始文件并在必要时重用它。

拷贝 /etc/ssh/sshd_config 文件并对其写保护可以通过在终端提示符后运行下列命令:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original

以下是您可能更改配置语句的范例:

  • 要设置您 OpenSSH 在 TCP 2222 端口而不是缺省的 TCP 20 端口监听,可以如下使用改变 Port 语句:

    Port 2222

  • 要让 sshd 允许基于公钥登录证书,可以简单添加或修改该行语句:

    PubkeyAuthentication yes

    /etc/ssh/sshd_config 文件中。如果已经存在,确保该行语句没有被注释。

  • 要使您的 OpenSSH 服务器显示 /etc/issue.net 文件的内容以作为预登录 Banner,只需简单地将下行添加或修改:

    Banner /etc/issue.net

    /etc/ssh/sshd_config 文件中即可。

在修改 /etc/ssh/sshd_config 文件之后,保存该文件并重启 sshd 服务器应用程序以使之生效。可以在终端提示符后使用下列命令:

sudo /etc/init.d/ssh restart

[警告]

许多其他的 sshd 配置语句可以使服务器应用程序按您的要求运行。然而,给您一个忠告,如果您访问服务器的唯一方法就是使用 ssh,而且您在通过 /etc/ssh/sshd_config 文件来配置 sshd 时犯了一个错误,那么在重启该服务之后您可能会发现您被锁在服务器外面了,或者是 sshd 服务在处理一个不正确的配置语句时拒绝启用。因此当在远程服务器上编辑该文件时要格外的小心。

参考资料

OpenSSH 网站

高级 OpenSSH 维基页