authorizedkeysfile 是 ssh 服务端指定公钥存放路径的配置项,用于打破默认路径依赖、增强安全性;需在 /etc/ssh/sshd_config 中配置非标准路径(如 /etc/ssh/keys/%u/authorized_keys),并严格设置目录权限、启用公钥认证、禁用密码登录方可有效加固。

Linux 系统中配置 SSH 服务的 AuthorizedKeysFile 自定义路径,本质是告诉 sshd 进程:用户公钥不再默认放在 ~/.ssh/authorized_keys,而是读取你指定的文件(或模板)。这在多租户、安全加固或统一密钥管理场景中很实用。
修改 /etc/ssh/sshd_config 配置项
用 root 权限编辑主配置文件:
sudo vi /etc/ssh/sshd_config
找到或添加这一行(注意不要有空格或拼写错误):
AuthorizedKeysFile /etc/ssh/keys/%u/authorized_keys
其中 %u 是用户名占位符,会自动替换为登录用户的实际用户名。你也可以用 %h(家目录)、%f(公钥指纹)等变量,详见 man sshd_config。
确保同时启用公钥认证:
PubkeyAuthentication yes-
RSAAuthentication yes(仅旧版本需要,OpenSSH 7.0+ 可省略)
创建对应目录与文件并设置权限
以 /etc/ssh/keys/%u/authorized_keys 为例,需为每个允许登录的用户建立专属子目录:
- 创建顶层目录:
sudo mkdir -p /etc/ssh/keys - 为用户
alice创建路径:sudo mkdir -p /etc/ssh/keys/alice - 将她的公钥内容写入:
sudo sh -c 'echo "ssh-ed25519 AAAA... alice@host" > /etc/ssh/keys/alice/authorized_keys' - 设严格权限:
sudo chmod 700 /etc/ssh/keys/alice && sudo chmod 600 /etc/ssh/keys/alice/authorized_keys - 所有权必须匹配用户:
sudo chown alice:alice /etc/ssh/keys/alice/authorized_keys
验证路径是否生效
重启服务后,可用以下命令快速确认 sshd 实际加载的路径:
sudo sshd -T | grep authorizedkeysfile
输出应为类似:authorizedkeysfile /etc/ssh/keys/%u/authorized_keys。若仍显示默认路径,说明配置未生效或存在语法错误(如被注释、缩进错误、缺少换行)。
注意事项与常见问题
自定义路径不等于随意放——sshd 对权限极其敏感:
- 整个路径链上的所有父目录(如
/etc/ssh/keys、/etc/ssh/keys/alice)都必须满足:chmod 700且属主为 root 或对应用户;不能有 group/other 写权限 - 最终的
authorized_keys文件必须是600,且属主为登录用户(不是 root) - 如果使用
%h,需确保用户家目录可被 sshd 访问(例如 SELinux 上可能需要额外策略) - 禁用密码登录前,务必先用新路径成功登录一次,避免锁死











