SSH密钥配置指南:安全访问权限设置与最佳实践
依赖密码登录QoderWake服务器,相当于用一把简易挂锁守护数据中心的大门。暴力破解、凭证泄露等威胁时刻存在。将认证方式升级为SSH密钥,并实施系统化加固,是构建可靠访问控制防线的行业标准。以下五个步骤将引导您完成这一关键安全配置。
一、生成高强度SSH密钥对
密钥对是安全访问的基石。选择现代的非对称加密算法至关重要,它能规避旧算法(如RSA-1024)的已知漏洞,确保私钥的不可逆推性。目前,Ed25519算法是OpenSSH的推荐选择,它在签名速度、密钥体积和安全性之间取得了最佳平衡。
生成过程很简单:在本地终端执行命令 ssh-keygen -t ed25519 -C “qoderwake-admin@company.com”。当系统提示保存路径时,直接回车使用默认位置即可。
关键在于下一步:设置通行短语(passphrase)。这里绝不能偷懒,必须输入一个至少12位、包含大小写字母、数字和特殊符号的强密码。这相当于为您的私钥又加了一道保险锁。生成后,记得用 ls -l ~/.ssh/id_ed25519 检查一下私钥文件权限,确保是600(即仅所有者可读可写)。
二、将公钥安全注入QoderWake服务器
公钥需要被准确无误地放置到服务器对应用户的家目录下。这里有个细节:authorized_keys 文件里不能有多余的空行或格式错误,否则SSH服务会直接拒绝认证。
最便捷的方法是使用 ssh-copy-id 命令:ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@qoderwake-server-ip。如果这个命令不可用,那就手动操作:先在本地查看公钥内容 cat ~/.ssh/id_ed25519.pub,然后登录服务器,依次创建目录、设置权限,并将公钥内容追加到 ~/.ssh/authorized_keys 文件中。
最后一步非常关键:立即执行 chmod 600 ~/.ssh/authorized_keys,收紧该文件的权限。
三、强制启用密钥认证并禁用密码登录
只配置密钥而不关闭密码通道,等于给攻击者留了一扇备用窗户。必须在SSH服务配置中明确关闭密码验证路径,才能彻底杜绝暴力破解的可能。
以root权限编辑 /etc/ssh/sshd_config 文件,找到并确认以下参数被设置为:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
同时,务必检查 PermitRootLogin 参数,确保其值为 prohibit-password 或 no,绝对不能是 yes。保存修改后,重启SSH服务使配置生效。
四、限制SSH访问源与端口暴露面
纵深防御的第一原则就是减少攻击面。默认的22端口是全网扫描的焦点,非必要不应暴露。
建议在 sshd_config 中修改监听端口,例如改为2222。更重要的是,通过网络防火墙策略,将访问权限锁定在特定的管理IP段。例如,使用UFW可以这样设置:sudo ufw allow from 192.168.10.0/24 to any port 2222,并明确拒绝其他无关端口。
配置完成后,别忘了启用防火墙并验证规则是否已按预期生效。
五、实施私钥文件与目录权限硬约束
这是最容易忽略却导致连接失败的关键一步。OpenSSH在认证前会严格校验相关文件和目录的权限。如果 .ssh 目录权限过宽(如755),或私钥文件权限过松(如644),连接会被静默拒绝,并在系统日志中留下“Bad permissions”记录。
因此,必须在客户端执行权限修复:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
同样,在服务器端也需要校验:使用 ls -ld 命令依次检查用户主目录、.ssh 目录和 authorized_keys 文件的权限。输出结果中,“group”和“other”列绝不能出现任何 r(读)、w(写)、x(执行)权限字符。一旦发现类似 -rw-r--r-- 或 drwxr-xr-x 的结果,必须立即修正。
如果部署时使用了root账户操作其他用户的目录,最后还需用 chown 命令将所有权正确归还给相应用户。
