使用Hyper终端时NixOS Home-manager SSH配置权限异常问题
解决Home-manager生成SSH配置软链接的权限问题
问题原因
Home-manager默认会将.ssh/config生成为指向Nix Store的软链接,软链接本身权限为lrwxrwxrwx,不符合SSH对配置文件的安全要求(必须为600,即仅所有者可读可写)。部分终端(如gnome-shell、VS Code终端)的SSH客户端会跟随软链接检查目标文件权限,而Hyper终端的SSH环境直接检查软链接本身权限,因此触发报错Bad owner or permissions on /home/me/.ssh/config。
解决方案:通过Home-manager生成实际配置文件并设置权限
可以通过home.file模块覆盖默认的软链接,将Home-manager生成的SSH配置文件复制到用户目录,并设置正确的权限:
home-manager.users.me = { pkgs, ... }: { programs.ssh.enable = true; programs.ssh.matchBlocks = { fooServer = { port = 1022; hostname = "example.com"; user = "me"; }; }; # 手动创建.ssh/config文件,替代默认软链接 home.file.".ssh/config" = { source = config.programs.ssh.configFile; # 引用Home-manager生成的配置文件 mode = "0600"; # 设置符合SSH要求的权限 }; };
验证方法
应用配置后,检查.ssh/config的权限:
ls -l ~/.ssh/config
应显示类似如下结果:
-rw------- 1 me users ... /home/me/.ssh/config
此时在Hyper终端中使用SSH即可正常连接。
内容的提问来源于stack exchange,提问作者Bill Johnston
相关产品推荐
相关产品推荐

