本文提供群晖NAS配置SSH免密登录并关闭密码验证的安全指南。通过生成SSH密钥对,将公钥添加至NAS的authorized_keys文件,并正确设置文件权限,实现安全的密钥认证登录。最后通过修改sshd_config彻底关闭密码登录,可有效防御暴力破解攻击。操作前请务必测试密钥登录正常,并妥善备份私钥文件。

博主博客

前言

通过 SSH 使用密码登录群晖 NAS 存在被暴力破解的风险。为提高安全性,可使用公钥认证方式实现免密码登录,并彻底关闭密码登录功能。本教程以 DS920+ 为例,适用于大多数群晖机型。

一、准备工作

  1. 确保拥有管理员权限的群晖账户。
  2. 电脑端安装 SSH 客户端(Windows 可使用 PowerShell、WSL 或 Git Bash;macOS/Linux 直接使用终端)。
  3. 确认群晖与电脑在同一局域网。

二、实施步骤

步骤 1:开启 SSH 并登录

  1. 进入群晖 控制面板 → 终端机和 SNMP
  2. 勾选 “启动 SSH 功能”,建议将端口从默认的 22 改为其他端口(例如 8888),点击 应用
  3. 从电脑终端使用以下命令登录(请替换 IP、端口和用户名):
ssh -p 8888 [email protected]

首次登录会提示确认指纹,输入用户密码即可进入。

可选配置:为方便后续登录,可在电脑的 ~/.ssh/config 文件中添加配置:

Host nas
    HostName 192.168.x.x
    Port 8888
    User username

之后只需执行 ssh nas 即可连接。

步骤 2:检查或创建 .ssh 目录

登录后执行:

ls -la ~/

若没有 .ssh 文件夹,则创建:

mkdir ~/.ssh

步骤 3:生成 SSH 密钥对(如电脑端尚未生成)

电脑终端中执行:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

按提示设置密钥保存路径(默认 ~/.ssh/id_rsa)及密码(可选)。
生成后查看公钥:

cat ~/.ssh/id_rsa.pub

复制输出的全部内容(以 ssh-rsa 开头)。

步骤 4:将公钥添加至群晖

在群晖 SSH 会话中执行:

vim ~/.ssh/authorized_keys

i 进入编辑模式,粘贴复制的公钥内容,按 ESC 后输入 :wq 保存退出。
(如不熟悉 vim,可使用 echo "公钥内容" >> ~/.ssh/authorized_keys 追加写入)

步骤 5:设置正确的文件权限

权限设置是关键步骤,错误会导致免密登录失败。
在群晖 SSH 中依次执行:

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

步骤 6:启用公钥登录并配置 SSH 服务

编辑 SSH 配置文件:

sudo vim /etc/ssh/sshd_config

找到并修改以下参数(若被注释则去掉 #):

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存退出后,重启 SSH 服务:

  • 方法一:在群晖控制面板中关闭再开启 SSH 功能。
  • 方法二:命令行执行 sudo synosystemctl restart sshd

步骤 7:测试公钥登录

断开当前 SSH 连接,在电脑终端重新执行 ssh nas(或对应命令)。
若无需输入密码即可登录,说明公钥配置成功。

步骤 8:关闭密码登录(增强安全)

重新编辑 SSH 配置文件:

sudo vim /etc/ssh/sshd_config

修改:

PasswordAuthentication no

保存后再次重启 SSH 服务。
务必确保公钥登录可用后再执行此步骤,否则可能被锁在外!

三、注意事项与故障排查

  1. 权限问题:群晖对用户目录权限要求严格,务必确保 ~755~/.ssh700authorized_keys600
  2. 公钥格式:确保粘贴的公钥为单行格式,无多余换行或空格。
  3. 端口与防火墙:如无法连接,检查路由器或群晖防火墙是否放行 SSH 端口。
  4. 备份密钥:将电脑端的私钥(如 id_rsa)妥善备份,切勿泄露。
  5. 多设备登录:如需从其他电脑登录,将其公钥追加到 authorized_keys 文件中即可。

四、总结

通过公钥认证实现 SSH 免密登录,并关闭密码登录,可显著提升群晖 NAS 的访问安全性。操作前建议先在测试环境中熟悉流程,并始终保留一个有效的登录会话作为备用,防止配置失误导致无法访问。