Linux SSH授权密钥与权限设置

ssh密钥认证需正确配置权限与SElinux上下文。1. 生成Ed25519密钥并部署公钥至服务器authorized_keys文件;2. 设置~/.ssh目录权限为700,authorized_keys文件权限为600;3. 主目录不可有组或其他写权限;4. SELinux启用时需确保.ssh目录及文件上下文为ssh_home_t,可用restorecon -R ~/.ssh修复;5. 确认sshd_config中PubkeyAuthentication yes且AuthorizedKeysFile .ssh/authorized_keys;6. 修改后重启sshd服务。权限错误或SELinux上下文不当是密钥失效主因。

Linux SSH授权密钥与权限设置

linux系统中,使用SSH密钥认证可以提升远程登录的安全性。相比密码登录,密钥对验证更难被暴力破解。但若配置不当,不仅无法增强安全,还可能引发连接失败。以下是关于SSH授权密钥的配置与关键权限设置的实用说明。

SSH密钥生成与部署

用户通常在本地生成密钥对,将公钥上传至服务器。使用ssh-keygen命令可创建RSA或Ed25519类型的密钥:

  • ssh-keygen -t ed25519 -C “your_email@example.com”
  • 私钥保存在本地(如~/.ssh/id_ed25519),公钥内容需追加到服务器上的~/.ssh/authorized_keys
  • 可通过ssh-copy-id user@server_ip自动完成公钥部署

authorized_keys 文件权限要求

SSH服务对文件和目录的权限非常敏感。权限过宽会导致密钥认证被忽略,强制回退到密码登录甚至拒绝访问。

  • 用户主目录(如/home/username)不应有组或其他用户的写权限,推荐权限为755
  • ~/.ssh目录权限应设为700(仅所有者可读写执行)
  • ~/.ssh/authorized_keys文件权限应为600(仅所有者可读写)

设置命令示例:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

SELinux与文件上下文(如启用)

centos、RHEL等系统中,SELinux可能影响SSH密钥读取。即使权限正确,错误的文件上下文也会导致认证失败。

Linux SSH授权密钥与权限设置

创客贴设计

创客贴设计,一款智能在线设计工具,设计不求人,ai助你零基础完成专业设计!

Linux SSH授权密钥与权限设置51

查看详情 Linux SSH授权密钥与权限设置

  • 确认~/.ssh/authorized_keys具有正确的SELinux上下文:ssh_home_t
  • 可用restorecon -R ~/.ssh恢复默认上下文
  • 若问题持续,临时设置setenforce 0测试是否为SELinux引起

sshd_config 配置检查

确保SSH服务允许公钥认证。相关配置位于/etc/ssh/sshd_config

  • PubkeyAuthentication yes — 启用密钥认证
  • AuthorizedKeysFile .ssh/authorized_keys — 指定公钥文件路径
  • 修改后运行systemctl restart sshd重启服务

注意:不要随意开启StrictModes no,它会跳过权限检查,带来安全隐患。

基本上就这些。密钥能用但突然失效,多数是权限被改动;新配置不生效,优先查authorized_keys位置和权限。保持目录和文件权限严谨,是SSH密钥顺利工作的基础。

上一篇
下一篇
text=ZqhQzanResources