群晖改了默认SSH登录账号这件事我其实犹豫了很久要不要写。因为身边不少朋友第一台NAS都是群晖从第三方套件、Docker容器跑到底层脚本总会撞上“需要root权限”这堵墙——明明在SSH里登录了敲sudo却被提示没有权限或者干脆想用root直接走SSH进来却发现群晖压根不让你登录。很多人买群晖图的就是省心但真要把它当成一台正经Linux服务器来用SSH是绕不过去的第一关。这篇教程就讲清楚两件事一是怎么在群晖上合理地把SSH默认登录身份换成root二是这中间有哪些坑、哪些后果、怎么收尾。无论你是白群晖还是折腾黑群晖只要跑的是DSM系统这个思路基本通用。1. 先弄清楚群晖默认的SSH登录逻辑是怎么回事1.1 DSM账号体系和root到底是什么关系群晖DSM虽然套了一层漂亮的图形界面但底层其实是个精简过的Linux系统。它的账号体系里也有root但跟你在Ubuntu或者CentOS上理解的那个root不太一样。默认情况下DSM会启用一个名为admin的管理员账号。这个admin在系统里被放到了administrators用户组拥有相当高的管理权限但它本身不是root。在DSM 6.x时代root账号存在但没有独立密码——你通过SSH登录admin之后执行sudo -i并输入admin的密码就能切到root身份。到了DSM 7.x群晖进一步收紧了权限admin默认甚至可能被关闭推荐你用自己的普通账号加管理员组。这里有个容易混淆的点很多教程说“修改root密码”其实在DSM 6里更准确的做法是执行sudo synouser --setpw root 新密码本质上是给root这个Linux账号设置了一个密码并让它生效。而在DSM 7里如果你已经用sudo切到root直接执行passwd改的就是root自己的密码。1.2 为什么群晖默认禁止root直接登录SSH群晖默认不允许root直接通过SSH登录这是刻意设计的安全策略。你想一下如果用root 弱密码暴露在公网上等于把NAS拱手送人。群晖本身面向的是非专业用户默认策略保守一点对大多数人是保护而不是限制。但问题在于管理员在维护一些底层功能时会非常别扭。比如修改Samba配置、调整内核参数、手工安装某些需要写系统目录的套件sudo -i之后才能操作。而如果你想让运维脚本在SSH登录后自动用root执行就得让root能够直接登录否则每次都要交互式输入sudo密码。所以什么时候必须改默认的root登录方式我的判断标准很简单如果你只是偶尔用一次SSH那就老老实实ssh adminIP进去再sudo -i如果你有自动化运维需求、脚本需要非交互式执行、或者经常要在群晖上跑容器和底层服务才值得放开root直接登录。2. 动手前准备开启SSH服务和选对客户端2.1 DSM控制面板里开启SSH的正确姿势不管你想怎么折腾root前提都得先把群晖的SSH服务打开。登录DSM网页后台打开“控制面板”找到“终端机和SNMP”勾选“启用SSH功能”。默认端口是22如果你想稍微降低一点被扫描的风险也可以改成比如22222这种高位端口。改完端口自己要记住不然下次连不上别怪我没提醒。这里有个细节群晖的SSH功能其实由sshd服务管理修改端口后DSM会自动更新/etc/ssh/sshd_config。所以如果后续你在手动改配置时发现端口又变回22了很可能是控制面板的修改覆盖了文件配置要留意一下。2.2 SSH客户端怎么选更适合群晖场景SSH客户端的选择会影响后续操作体验这里我按使用场景推荐几类临时登录、懒人党直接用Windows 10/11自带的终端ssh admin192.168.x.x就行不需要安装额外软件。经常跑运维、需要保存多台设备信息的MobaXterm或Bitvise。MobaXterm左边有文件树可以方便地浏览远端目录还有集成的SFTP面板Bitvise的SFTP功能做得非常稳适合传大文件。程序员、习惯VS Code的装个Remote-SSH扩展直接在IDE里编辑群晖上的脚本和配置文件体验很好。但要注意Remote-SSH在远端会安装一个server组件有些扩展要求root权限才正常工作所以很多人第一次用VS Code连群晖发现插件不生效往往就是权限不够。我自己的主力是MobaXterm偶尔用VS Code改群晖上的Docker Compose文件。你可以先找个顺手的工具不用纠结反正SSH协议是通用的。3. 核心实操切换root身份的两条路径3.1 临时方案sudo -i直接提权先讲临时方案因为这是最安全、也是最推荐大多数人的方式。用你自己的管理员账号DSM 6是adminDSM 7一般是安装系统时创建的那个账号SSH登录群晖然后执行sudo -i这时候系统会提示你输入当前用户的密码。输入正确后你的命令提示符会从$变成#说明已经是root身份了。注意这里有个很常见的误解sudo -i切换到root之后如果你再执行exit只会退出root回到普通用户还需要再执行一次exit才能断开SSH连接。所以“我已经退出SSH了但端口还开着”的情况往往就是只退了一层。临时方案的好处是安全root身份用完即走不会留一个长期暴露的超级账户。但缺点是没法用于自动化脚本因为每次都需要交互输密码。3.2 永久方案修改sshd_config允许root直接登录如果你的需求是让root能直接用SSH登录那要动的是SSH服务的核心配置文件/etc/ssh/sshd_config。具体操作如下先SSH登录群晖切到rootsudo -i然后编辑配置文件。群晖系统自带的编辑器比较简陋建议先安装一个vim或者直接用vi也行vi /etc/ssh/sshd_config在文件里找到或添加这一行PermitRootLogin yes保存退出。如果文件里已经有了PermitRootLogin no或者prohibit-password要把前面的注释符号删掉并改成yes。修改完成后重启SSH服务synoservicectl --restart sshd如果你的DSM版本比较老这个命令可能不存在那就直接在控制面板里取消勾选“启用SSH功能”再重新勾选效果一样。重启服务后你重新开一个SSH会话试着直接用root登录ssh root192.168.x.x密码输入你设置的root密码。如果之前从没设置过root密码先用admin登录执行synouser --setpw root 你想要的密码DSM 7上也可以先sudo -i切到root再直接passwd修改效果相同。3.3 配置里的几个关键参数说明/etc/ssh/sshd_config里跟root登录相关的参数主要有三个我逐个说清楚PermitRootLogin控制root能否通过SSH登录。可选值有yes允许、no禁止、prohibit-password允许但只能用密钥登录不能用密码。如果你既想放开root又不想太危险prohibit-password是个折中方案。PasswordAuthentication是否允许密码认证。如果设为no所有账号都只能用SSH密钥登录密码登录全部关闭。PubkeyAuthentication是否允许公钥认证。默认是yes一般不用动。我建议的组合是PermitRootLogin prohibit-passwordPasswordAuthentication no配合密钥登录。这样服务器基本不会受密码暴力破解的骚扰。3.4 改完配置后一个容易忽略的地方修改sshd_config后如果语法写错了或者某个参数值不受当前SSH版本支持sshd服务会启动失败。这时你可能连不上群晖了。遇到这种情况别慌恢复方案我在第4章专门讲。还有一个细节群晖的DSM在保存部分系统设置时可能会重写sshd_config把你手工加的配置覆盖掉。我实测在DSM 7.2上单纯改配置不会被动但如果你的操作是先改配置、又在控制面板里动了一次SSH设置自定义内容就有概率被冲掉。所以建议改完之后少去碰控制面板的SSH开关。4. 实操中的高发雷区版本差异与改坏恢复4.1 DSM 6和DSM 7的差异不能忽略我见过很多教程不分版本直接甩一套命令这在群晖上很容易翻车。DSM 6.x时代admin账号默认启用root没有独立密码sshd_config里默认没有PermitRootLogin这一项。所以你能做的就是SSH登录adminsudo -i然后设置root密码再改sshd_config。DSM 7.x开始安全体系大改。admin账号默认是关闭的系统会要求你创建自己的管理员账号。root密码的逻辑也变了没有单独的设置入口只能通过sudo -i之后用passwd或synouser --setpw设置。另外DSM 7对系统分区的权限限制更严某些目录即使在root身份下也未必能直接写入需要用mount -o remount,rw /重新挂载。4.2 黑群晖上的注意事项黑群晖的情况稍微复杂一点因为它跑在普通PC或虚拟机硬件上引导方式和白群晖不同。但SSH相关配置文件的逻辑是一样的root修改流程也几乎没有差异。不过黑群晖有几个额外风险点值得关注引导盘损坏或系统更新失败会导致进不了DSM这时候SSH自然也用不了。黑群晖的某些引导版本把手动修改过的系统文件视为风险重启时可能被还原或导致引导异常。建议操作前先备份引导盘的配置比如使用一些引导工具导出config文件。我自己折腾黑群晖的经验是SSH配置层面胆子可以大一点因为大不了重装引导但是涉及系统内核参数、驱动级别的修改一定要非常谨慎。4.3 配置改坏了SSH连不上怎么捞回来这是群晖用户最容易慌的时刻改完sshd_config重启服务然后新的SSH连接死活连不上。如果你的SSH端口不是默认22先确认是不是端口写错了如果确认端口没问题那基本就是sshd没启动起来。恢复的思路有几个层级第一级从DSM网页后台恢复。登录控制面板找到“终端机和SNMP”取消勾选“启用SSH功能”点保存再重新勾选。这个过程DSM会重新生成ssh配置并尝试启动服务。如果只是参数写错这一步就能救回来。第二级如果第一级不行说明sshd配置有真正的问题导致每次启动都失败。那就需要找一个本地终端入口。部分Intel平台的黑群晖可以通过显示器接键盘进入tty界面用root或admin登录命令行模式手动把配置文件改回来。第三级实在不行就只能重启群晖。别笑有些情况下重启后DSM的配置管理机制会自动修正sshd配置SSH能恢复正常。所以不要怕改坏但要做好心理准备标准应对流程是网页后台重试一遍SSH开关重启NAS再考虑接显示器。5. 常见问题与排查技巧实录5.1 SSH连接失败先按这三步排查我收到过很多“SSH连不上群晖”的提问绝大多数都不是root配置的问题而是网络或密码层面的事情。排查顺序我建议固定为端口通不通、服务开没开、账号密码对不对。先测端口telnet 192.168.x.x 22如果连接被拒绝说明服务没启动或者端口不对。接着确认群晖的SSH服务是否开启再检查防火墙规则。群晖自带防火墙如果有启用需要放行对应端口。再看认证如果端口通但你输入密码后提示Permission denied大概率是账号或者密码的问题。注意群晖默认不允许root用密码登录如果你没改sshd_config就尝试ssh rootIP不管密码对不对都会拒绝。5.2 关于Error 1045这类数据库root权限报错热词里有个error 1045 (28000): access denied for user rootlocalhost这和SSH root是两码事但容易被混淆我顺手说一下。如果你通过SSH登录群晖后想在命令行操作自带的MariaDB或MySQL执行mysql -u root -p可能会报1045意思是数据库root密码不对或未授权。这时候要用群晖套件中心的phpMyAdmin或者sudo mysql方式登录数据库进去之后单独给数据库root设置密码。数据库的root和系统root是两个独立概念别用SSH的root密码去试数据库。5.3 密钥登录配置实战兼防密码爆破既然都放开root登录了至少把SSH密钥认证配置上。操作如下在你自己的电脑上生成一对密钥ssh-keygen -t ed25519 -C nas-ssh然后复制公钥到群晖ssh-copy-id -p 端口号 root群晖IP如果ssh-copy-id不可用就手动把公钥内容追加到群晖上/root/.ssh/authorized_keys文件root的home目录可能没有自动创建需要你mkdir -p ~/.ssh。配置完后测试用密钥能否登录能登录后再把 ssHD_config 里改成PermitRootLogin prohibit-password和PasswordAuthentication no重启服务。这套组合拳之后密码爆破基本对你没有威胁了。5.4 几个我踩过的坑和最终建议最后分享几个我实际操作中遇到的小问题。第一个坑改完sshd_config后是“文件保存成功但没重启服务”然后一直怀疑自己改错了。DSM的synoservicectl --restart sshd命令在7.2版本上偶尔不生效最稳的办法还是到控制面板里把SSH关了再开或者干脆重启NAS。第二个坑用VS Code Remote-SSH连群晖时因为群晖自带的是旧版GLIBC有些新版本的VSCode Server会启动失败。解决办法是安装社区套件里的PHP或Node版本或者换MobaXterm。第三个坑千万别图方便把DSM的系统盘直接当普通Linux来改比如修改/etc/passwd的root shell可能会导致DSM系统界面异常。群晖的许多系统服务都依赖自己的配置管理系统手动改系统文件风险很高。我的建议是能用sudo -i就别开root直登开了root直登也一定要配密钥配了密钥之后尽量限制SSH端口只对局域网或指定IP开放。群晖这东西用好了是你的私有云用不好就可能成为暴露在公网上的后门。说实话群晖的SSH默认权限虽然烦人但换个角度想这正是它稳定省心的原因之一。把它当成一台真正的Linux服务器来管理时合理放权、安全意识跟上才能用得安心。