的Openssh
一组实用程序使我们能够在计算机之间创建安全的加密连接。在本教程中,我们将介绍一些最有用的选项,我们可以使用这些选项来更改sshd
,Openssh
守护程序以使您的Linux系统管理工作更轻松。
在本文中,我们假设已经存在一个正在运行且可访问的服务器。如果您想了解有关Openssh安装的更多信息,可以看一下本文。如何在Ubuntu Linux上安装SSH服务器。
在本教程中,您将学习:
- 如何通过操作主ssh配置文件中的选项来自定义sshd守护程序的行为
/etc/ssh/sshd_config
- 如何更改服务器使用的默认端口
- 如何更改服务器侦听的地址
- 如何更改最大SSH登录时间
- 如何允许或拒绝以root用户身份登录
- 如何更改最大登录尝试次数和打开的最大会话数
- 用户尝试向服务器进行身份验证时如何显示消息
- 如何启用/禁用密码和公钥认证
- 如何启用/禁用HostBasedAuthentication
- 启用/禁用X11转发
使用的软件要求和约定
类别 | 使用的要求,约定或软件版本 |
---|---|
系统 | Distribution-independent |
软件 | 除Openssh外,无需其他软件即可遵循本教程 |
其他 | 正在运行的Openssh服务器 |
约定 | #-要求linux命令可以直接以root用户身份或通过使用root特权以root特权执行sudo 命令$-要求linux命令以普通非特权用户身份执行 |
sshd守护程序配置文件
默认情况下sshd
,Openssh
守护程序,从/etc/ssh/sshd_config
文件。可以使用以下命令指定其他文件路径-f
启动守护程序时的选项。我们可以更改许多选项以更改守护程序的行为。尽管这里不可能一一列举,但我们将看到一些最常用的方法,以及通过更改其值可以获得的方法。每次更改选项时,为了使更改生效,应该重新启动守护程序。使用systemd时,要运行的命令是:
$ sudo systemctl restart sshd
更改服务器使用的端口
这就是所谓的security through obscurity
测量:默认情况下sshd
守护程序监听端口22
。更改使用中的端口本身并不能提高安全性,因为进行端口扫描并查看计算机正在使用哪些端口很简单。但是,暴力登录尝试通常仅将默认端口作为目标,因此修改使用中的端口通常会有所帮助。为了指示守护程序侦听特定端口,我们使用Port
选项并提供端口号:
Port 1024
可以提供多次出现的选项:服务器将在所有指定的端口上侦听。在重新启动ssh服务器以使更改生效之前,根据更改修改防火墙规则确实很重要。在客户端,要使用特定端口进行连接,我们必须使用-p
选项(–port的缩写)。例如,要使用端口1024登录,我们将编写:
$ ssh -p 1024 egdoc@feanor
为避免每次连接服务器时都必须指定端口,我们可以在~/.ssh/config
文件(我们可能必须创建它,因为默认情况下它不存在,并且我们必须使其只能由用户访问),如以下示例所示:
Host feanor
HostName 192.168.0.39
Port 1024
这样,每次我们都会尝试ssh匹配Host
(在这种情况下,主要功能是ssh config文件的相关节中指定的参数)将自动应用。
更改服务器侦听的地址
除了港口sshd
守护程序侦听,我们也可以更改listen address
。默认情况下,服务器侦听所有本地地址。可以在ssh配置文件中找到与此选项一起使用的语法示例:
#ListenAddress 0.0.0.0
#ListenAddress ::
我们可以通过以下方式之一指定地址:
- 主机| IPv4地址| IPv6地址
- 主机| IPv4地址:端口
- 主机| IPv6地址:端口
使用的选项称为ListenAddress
为了指定多个地址,允许多次出现该选项。我们可以用IPv4
要么IPv6
地址,并可选地指定要使用的端口。如果我们不指定端口,sshd
守护程序将侦听由Port
我们在上面看到的选项。
更改最大登录时间
我们可以配置Openssh
如果用户未成功登录,守护程序将在指定的时间后断开连接。在这种情况下,将调用我们要更改的选项LoginGracetime
。我们要做的就是提供时间限制值,例如:
LoginGracetime 2m
此选项的默认值为120s
(秒)
以root身份允许或拒绝登录
通过使用PermitRootLogin
我们可以确定是否sshd
守护程序应允许root用户直接登录。该选项接受以下值之一:
- 是
- 没有
- prohibit-password
- forced-commands-only
前两个值是漂亮的self-explanatory。使用时yes
使用时,允许root用户通过ssh登录no
这种可能性被否认。的prohibit-password
和forced-commands-only
值更有趣。
当前者用作PermitRootLogin
选项,密码和键盘交互式登录被禁用,但是root用户可以使用public key
。如果forced-commands-only
使用,而是允许通过公共密钥身份验证的root登录,但前提是command
选项在授权密钥中指定。例如:
command="ls -a" ssh-rsa [...]
上面我们指定了ls -a
作为将由root使用的ssh密钥的命令。这样,使用键进行连接时,将执行命令,然后将关闭与服务器的连接。让我们验证一下(这里我假设密钥已经在客户端上并且已经在服务器上被授权):
$ ssh root@feanor
Enter passphrase for key '/home/egdoc/.ssh/id_rsa':
. .. .bash_history .bashrc .profile .ssh .vim .viminfo
Connection to feanor closed.
更改最大登录尝试次数和打开的最大会话数
我们可能要更改的另外两个参数是每个连接尝试登录的次数,以及允许的打开的Shell,登录或子系统会话的数量。我们可以使用MaxAuthTries
选项,提供允许的尝试次数(默认值为6
)。相反,可以通过使用MaxSessions
选项。此选项也采用整数值,默认值为10
。
当用户尝试向服务器认证时显示一条消息
我们可以使用Banner
选项,以指定包含一些文本的文件,该文件我们要在用户验证服务器之前发送给用户。该选项的默认值为none
,因此不会显示横幅。这是一个例子。我们创建的/etc /ssh /banner文件包含一些用作消息的文本。如果我们将选项设置如下:
Banner /etc/ssh/banner.txt
当我们尝试登录时,会得到以下结果:
$ ssh egdoc@feanor
###############################
# Test Banner #
###############################
egdoc@feanor's password:
启用/禁用密码和公钥认证。
的sshd
守护程序提供了多种验证用户身份的方法。我们可以选择分别使用密码或公共密钥启用或禁用身份验证PasswordAuthentication
和PubkeyAuthentication
选项。默认情况下,两个选项通常都设置为yes
:这意味着用户可以通过提供密码并使用自己拥有的公共密钥连接到服务器(密钥也可以用密码保护)。要禁用两个选项之一,我们只需使用no
作为价值。例如,如果只想允许通过公共密钥登录,则可以设置:
PasswordAuthentication no
这样,只有拥有 public key
授权密钥文件中包含的内容将能够登录到服务器。授权密钥文件是包含允许的公共密钥的文件。默认情况下,文件为.ssh/authorized_keys
在服务器上用户的主目录中,但是可以使用AuthorizedKeysFile
选项并指定替代文件,提供absolute
或一个relative
路径。使用相对路径时,它被认为是相对于用户主目录的。该选项也可以设置为none
:这样,服务器将不会在文件中搜索公钥。
启用/禁用基于主机的身份验证
可以将Openssh服务器设置为接受host-based
身份验证。使用这种类型的身份验证时,主机代表所有或部分用户进行身份验证。该选项设置为no
默认情况下。将选项设置为yes
不足以使基于主机的身份验证起作用。
启用/禁用X11转发
的X11
窗口系统具有client-server体系结构:客户端是许多图形应用程序,请求连接到管理显示的服务器。 X11服务器及其客户端通常在同一台计算机上运行,但这不是必需的。可以通过专用但不安全的协议访问远程X11服务器。Openssh
让我们安全地运行连接,创建一个加密的隧道。控制此行为的选项是X11Forwarding
。通常默认情况下禁用此功能,因此将其设置为no
。
我们必须将选项设置为yes
如果我们想利用它。在客户端,我们通过使用-X
命令行中的选项,或设置ForwardX11
至yes
在客户端配置文件中。例如,假设我们在远程计算机上运行了X11。我们想使用ssh连接来启动”pluma”应用程序(轻量级文本编辑器)并使用X11Forwarding对其进行控制。我们跑:
$ ssh egdoc@feanor -X pluma
该程序将启动。在标题栏中,我们可以清楚地看到它正在”feanor”上运行,这是远程计算机的名称。
结论
在本教程中,我们看到了默认值sshd
守护程序配置文件,我们了解了如何通过使用-f
服务启动时的选项。我们还看了一些我们可以在上述文件中使用的,更改sshd行为的最有用的选项。我们看到了如何允许或拒绝基于密码的认证和基于public-key的认证。如何启用或拒绝root登录;如何启用或禁用X11转发功能以及如何在用户尝试对其进行身份验证时使服务器显示消息。
我们还看到了如何指定每个连接允许的最大登录尝试次数,以及如何更改服务器侦听的地址和端口。要了解有关可能的服务器配置的更多信息,请查阅sshd和sshd_config配置文件的手册页。