如何仅允许 ssh 从本地网络访问 root 用户?

Ita*_*not 41 linux ssh centos6

我在 CentOS 6.5 机器上安装了 Google-Authenticator 并配置了某些用户以提供 OTP。

在编辑时,/etc/ssh/sshd_config我看到一个指令“ PermitRootLogin”,默认情况下被注释掉。

我想设置“ PermitRootLogin no”,但仍然只能从本地网络以 root 身份通过 ssh 连接到机器。

那可能吗?

Sve*_*ven 62

使用Matchconfig 参数/etc/ssh/sshd_config

# general config
PermitRootLogin no 

# the following overrides the general config when conditions are met. 
Match Address  192.168.0.*
    PermitRootLogin yes
Run Code Online (Sandbox Code Playgroud)

man sshd_config

  • 我会将其更改为还允许 IPv6 链接本地地址。链路本地地址在 IPv6 中的工作方式使它们对错误配置的网络非常健壮。这意味着如果您需要通过 ssh 来修复网络配置错误,那么使用 IPv6 链接本地地址可能是唯一的选择。 (10认同)
  • 您还可以在“~root/.ssh/authorized_keys”中限制身份验证密钥的来源。使用 `from="192.168.0.0/24 "` 作为键的前缀。 (8认同)

Lek*_*eyn 15

Match address方法已经提到,但您也可以限制允许登录系统的用户(或组)。例如,要限制用户itai(从任何地方)和root(从特定网络)登录,请使用:

AllowUsers itai root@192.168.0.*
Run Code Online (Sandbox Code Playgroud)

这可以防止所有其他用户(如apache)通过 SSH 登录。

另请参阅sshd_config(5)手册中的AllowUsers关键字。

  • 我更喜欢 `AllowGroups` 并将所有应该能够使用 SSH 登录的用户添加到特定组。猜猜这是一个品味问题,但这似乎对 sshd_config 的编辑更少(这意味着搞砸和锁定所有人的风险更低)。 (4认同)