在 FreeBSD 系统中配置 SSH 时,一个常见需求是仅允许普通用户登录,禁止 root 直接登录。然而,如果您需要启用 root 登录权限,操作方法同样简单。只需在 /etc/ssh/sshd_config 配置文件末尾添加以下三行核心配置项:
PermitRootLogin yes # 允许 root 登录
PermitEmptyPasswords no # 不允许空密码登录
PasswordAuthentication yes # 启用口令认证
添加配置后重启 SSH 服务即可生效。不过实际部署中常会遇到一些细节问题,下面详细梳理完整的配置流程及注意事项。
FreeBSD SSH 配置详解
首先,请确认 SSH 服务已启用。编辑 /etc/inetd.conf 文件,找到 ssh 相关行,将前面的注释符 # 删除,保存并退出。这样 SSH 服务将经由 inetd 进行启动。
然后编辑 /etc/rc.conf 文件,在末尾添加以下内容:
sshd_enable="yes"
接下来,执行以下命令启动 SSH 服务:
# /etc/rc.d/sshd start
使用以下命令验证 SSH 服务是否正常运行,关键在于检查 22 端口是否处于监听状态:
# netstat -an # 检查端口 22
最后,最关键的配置位于 /etc/ssh/sshd_config 文件中。以下是一份完整的配置文件示例,其中关键参数已取消注释,可供直接参考:
# $OpenBSD: sshd_config,v 1.72 2005/07/25 11:59:40 markus Exp $
# $FreeBSD: src/crypto/openssh/sshd_config,v 1.42.2.1 2005/09/11 16:50:35 des Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# 省略大量默认注释,关键配置项如下
PasswordAuthentication yes
IgnoreRhosts yes
IgnoreUserKnownHosts yes
PrintMotd yes
StrictModes no
RSAAuthentication yes
PermitRootLogin yes # 允许 root 登录
PermitEmptyPasswords no # 不允许空密码登录
PasswordAuthentication yes # 启用口令认证
Subsystem sftp /usr/libexec/sftp-server
配置文件修改完毕后,请务必重启 SSH 服务以使改动生效:
# /etc/rc.d/sshd restart
常见问题与补充说明
1. 重启后不生效? 如果重启后配置未生效,可尝试重新载入配置文件:
# /etc/rc.d/sshd reload
2. 登录时出现 "using keyboard-interactive authentication" 然后只提示 password? 请确认 PasswordAuthentication 是否已经设成 yes。另外,如果客户端是 Putty,记得在 SSH > Auth 设置里取消勾选 "尝试 '智能键盘' 认证(SSH-2)"。
3. 使用 root 账号登录时失败? 先确认密码是否为空——空密码是无法登录的,本文配置也已禁止空密码。
4. 确认 SSH 已安装? 如果没有,可以通过 sysinstall > Configure > Networking > sshd 来勾选安装。
以上便是 FreeBSD SSH 允许 root 登录的完整配置流程。配置完成后,建议分别使用普通用户和 root 账户进行登录测试,以确认权限控制符合预期。
