我已经在 CentOS 6.5 机器上安装了 Google-Authenticator,并配置了某些用户提供 OTP。
在编辑时,/etc/ssh/sshd_config
我看到一个指令“ PermitRootLogin
”,默认情况下它被注释掉了。
我想设置“ PermitRootLogin no
”,但仍然能够仅从本地网络以 root 身份 ssh 到机器。
那可能吗?
答案1
使用Match
配置参数/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
看man sshd_config
答案2
该Match address
方法已经提到过,但您也可以限制允许登录系统的用户(或组)。例如,要限制用户itai
(从任何地方)和root
(从特定网络)的登录,请使用:
AllowUsers itai [email protected].*
这将阻止所有其他用户(如apache
)通过 SSH 登录。
AllowUsers
另请参阅sshd_配置(5)手动的。
答案3
另一种策略是保留所有地址的PermitRootLogin
设置no
,但允许其他用户登录并使用 sudo。这样做的一个好处是,您可以使用 sudo 配置限制该用户。除了限制管理员用户可以从哪些 IP 地址登录之外,这又增加了一层保护。
在 中/etc/ssh/sshd_config
,禁用 root 登录:
PermitRootLogin no
创建另一个用户,例如,admin
。在此用户的授权密钥文件中配置允许的 IP 地址/home/admin/.ssh/authorized_keys
:
from="192.168.0.0/24,fe80::%eth0/64" <your public key here>
在此示例中,我还允许来自IPv6 链路本地地址。如果您使用可能解析为 IPv6 地址的 mDNS,或者即使路由中断也需要访问服务器,这将非常有用。请注意,eth0
地址的一部分将根据服务器上的接口名称而变化。使用ifconfig
或ip link
列出服务器的有效网络设备。