很多用户以为 Web 上把 SSH 开关一拨、状态显示”已启用”,这台 NAS 就等于拿到了一台完整 root 的 Linux 服务器,实际上并不是这样。常见的三种报错是:终端用 admin 账号能连得进,但 sudo -i 提权失败、提示当前用户不在 sudoers 文件里;提权之后跑 docker ps 又 Permission denied,提示没法访问 /var/run/docker.sock;人在外网,SSH 这个动作本身就走不到,连”连接被拒绝”都看不到。这三种报错基本把”开了 SSH 就能用”这个误区拆清楚了。
要让 SSH 真正变成一条可用的命令行入口,本地一段至少要把两步做对:终端登得进去是一步,能在 root 下拿到 Docker 操作权是另一步。远程一段则是另一组判断——给 SSH 自己开一条公网通道,还是只把 Portainer 这类 Docker 管理面板暴露出去,两条路不互斥但风险点不一样。下面按本地 → 远程 → 适用条件这个顺序写,命令和配置以极空间官方界面和社区文章 [1][2][3] 里通用的写法为准。
极空间这台机器本质是基于 ARM 的 Linux 小服务器,底层和普通 VPS 没太大差别,只是厂商用图形界面把命令行入口盖住了 [3]。所以开启路径是先登录 Web 管理界面,进”系统设置”,在设置页里找到”开启 SSH”的开关 [1][2]。点开后先弹风险提示,按提示输入”知晓风险”确认 [2],再输入与后台一致的管理员账密。这一步要小心:用 SSH 登录的账号是 Web 后台的管理员账号,不是 App 里单独的访客账号,也不是别人给的共享账号 [3]。确认之后,Web 上才会显示 SSH 已启用。
接下来是用终端连。容易踩两个坑。一是密码,很多人下意识把 Web 后台密码、App 密码、SSH 密码当三套密码处理,结果 SSH 一直认证失败;实际上 SSH 用的是 Web 后台那一套 [3]。二是首次连接时客户端会弹出主机指纹(host key)需要确认,按提示接受即可 [3]。默认端口是 22;如果极空间这边改过端口,连的时候用 -p 指定,或者先在 Web 设置页里翻到 SSH 配置那一块确认端口号。PowerShell、macOS 终端、PuTTY 都可以,连进去的命令大致是:
ssh admin@192.168.1.100
其中 admin 替换成自己后台账号,IP 替换成极空间的局域网 IP。登录成功后 shell 默认落在普通用户家目录里,到这一步”终端连进去”这件事算完成。
下一步是拿到 Docker 操作权,这是社区文章讲得最多、踩坑也最多的一段——SSH 通了不代表能在上面跑 Docker。社区里极空间、绿联这一类家用 NAS 上最快的提权路径就是 sudo -i 切到 root [1][2][3]:
sudo -i
whoami
whoami 返回 root,说明提权成功。但这一步只是给当前 shell 一个 root 环境,并不是说所有命令都能跑 [1]。接下来要验证的是 Docker 的操作权,它有自己的 socket 权限控制 [1][3]:
docker version
docker ps
如果这两条都能正常输出(包括 Server 那一段),说明当前账号对 Docker daemon 有完整的读写权,可以正常拉镜像、起容器。如果 docker ps 提示 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock,那问题不在 SSH 也不在提权,而在用户组或者 socket 的属主配置 [1]。
Permission denied 最常见的原因有两类。一是当前账号没有被加进 docker 用户组里,二是 /var/run/docker.sock 的属主因为某次系统升级被改回了 root [1]。排查顺序是先 id 看自己现在所属的组,再 ls -l /var/run/docker.sock 看属主和权限;如果账号不在 docker 组里,最稳的做法是按 Docker 官方文档把当前用户加进 docker 组,新开一个 shell 后再验证一次;如果还是不行,去看 systemd 启动 dockerd 的参数里有没有 -G 或 --group,确认服务实际带的组名和你加进去的组对得上 [1]。这一段以 Docker 官方文档为准,参考资料 [1] 描述的流程也基本是这个顺序,不在每一处都重复官方步骤。
docker ps 不报错之后,本地端的链路才算真正打通:SSH 进来 → sudo -i → root 下能操作 Docker。后面跑任何官方镜像(Alist、qBittorrent、Jellyfin、Portainer 等等)都是从这里起步。
本地打通只解决了一半的问题。很多人买 NAS 就是要从外面也能管。这一段要做的是在两条路之间取舍,不是单选。
第一条路是给 SSH 自己开一条公网通道。社区里极空间和绿联这类家用 NAS 上最常见的方案是装 cpolar 这类内网穿透工具,跑一条 TCP 隧道出去 [1][2][3]。cpolar 的一键安装命令 [2][3] 是这样:
sudo curl https://get.cpolar.sh | sh
sudo systemctl status cpolar
服务正常启动之后,浏览器访问 http://极空间IP:9200(比如 http://192.168.50.100:9200)能进 cpolar 的 Web 管理界面 [2][3],用 cpolar 官网注册的账号登录后再配隧道。配置上几个关键参数:隧道类型选 TCP,本地地址填 极空间IP:22(或你改过的 SSH 端口),隧道名称自己起一个,不和已有的重复 [2][3]。创建成功后会生成一个临时的公网地址,类似 2.tcp.cpolar.top:15595,任何一台联网的机器都可以用它 SSH 进去 [2]。
这条路的优点是入口统一,所有远程操作都收敛在 SSH 上,可审计、可复现;缺点是临时地址每次重启 cpolar 或者隧道被回收后会变,不适合长期用 [2]。要长期用,去 cpolar 官网”预留”里保留一个固定 TCP 地址,再绑回隧道——参考资料 [2] 里描述了这个流程,这里就不展开注册和付费细节了。
第二条路是只把 Docker 管理面板暴露出去,比如 Portainer。它的部署前提就是上面那段”root 下能跑 docker”:Portainer 装在 NAS 上需要它真的能控制 dockerd,社区教程 [5] 里反复强调的前提也是 SSH + Docker 权限要先有。装好 Portainer 之后,本地访问是 9443 端口;想从公网访问这条 Web UI,穿透还是要做,但暴露出去的不是 SSH 而是 HTTPS 管理界面 [5]。这条路的取舍点很清楚:想多人协作、可视化管理、容器启停不用背命令,Portainer 相对省事;只想一两个人用、流量不大、关心可复现性,SSH 端到端更可控。
两条路其实不互斥。一台 NAS 上同时跑 cpolar(SSH 隧道)和 Portainer 是常见组合,只是暴露公网的端口越多,被扫描面就越大。安全的事情下面单独说。
适用条件有以下几条。第一,极空间的硬件是 ARM 架构的 Linux [1][3],拉镜像时一定要看镜像是否带 arm64 标签;在 amd64-only 镜像上花时间排查拉不起来或者起不来,是自己给自己挖坑 [1][3]。第二,把 SSH 暴露到公网,本质上就是把 22 端口(或 cpolar 映射出去的那个端口)放到了被全网扫描的位置:默认密码、弱密码、固定端口这三样建议同时改;社区文章默认只描述连接方式,不负责安全加固,这部分要自己处理 [2][3]。第三,极空间系统大版本升级、SSH 开关被关闭、容器底层 socket 路径变更这些场景,参考资料里没有给出确定的结论,按当前系统版本实际验证 [1]。另外,参考资料里描述的”系统设置 → 开启 SSH”是当时版本的界面路径,如果极空间更新过系统固件,菜单层级或开关名称可能调整过,按官方界面实际显示走,不要凭印象猜 [1][4]。
下一步可以分两条路走。先用上面这套链路在本地跑一个最轻的官方镜像(比如 portainer/portainer-ce 或者某个轻量下载器),验证 SSH + 提权 + 远程入口的整条链路在你自己的机器上是稳的;这一步过了再去决定要不要花精力把 cpolar 临时地址换成固定 TCP,或者反过来——把 SSH 完全留在内网、只把 Portainer 这类管理面板放公网。如果只是想在家用 NAS 上跑几个容器自娱自乐,”远程端”那一节可以整段跳过不看。
参考来源
[1] 极空间开启SSH后能做什么?我把本地终端、Docker权限和远程管理入口全跑通了-CSDN博客
https://blog.csdn.net/Z_oioihoii/article/details/168018934
[2] 极空间 NAS 进阶玩法:开启 SSH + cpolar 内网穿透,轻松变身私有云服务器-博客园
https://www.cnblogs.com/ycfenxi/p/19971153
[3] 极空间NAS开启SSH:解锁底层权限,从存储盒变成全能私有服务器-CSDN博客
https://blog.csdn.net/COLLINSXU/article/details/160577595
[4] 极空间开启 SSH 后能做什么?从终端登录到公网远程管理完整实战-CSDN博客
https://m.blog.csdn.net/weixin_44976692/article/details/164053902
[5] 第三方docker管理工具Portainer部署教程,适用于已开启SSH服务的…
https://post.smzdm.com/p/aevzqnvz/









暂无评论内容