V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chrisy4382
V2EX  ›  macOS

macOS 的 /etc/ssh/sshd_config 配置不生效

  •  
  •   chrisy4382 · 2023-10-26 23:32:10 +08:00 · 1052 次点击
    这是一个创建于 396 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有用 macOS 作 SSH server 的啊,修改了 /etc/ssh/sshd_config,改了默认端口和禁止了密码登录,重启了 openssh 进程,但是没有生效

    看了一些教程,还把 usePAM 改成 yes 了,也没有用。

    重启进程用的是

    sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
    

    系统 14.0

    8 条回复    2023-10-28 13:00:19 +08:00
    MrKrabs
        1
    MrKrabs  
       2023-10-26 23:44:36 +08:00
    禁用自带 sshd ,用 brew 的 ssh service 得了
    riddle4ever
        2
    riddle4ever  
       2023-10-26 23:52:55 +08:00 via iPhone
    貌似设置里有个远程的开关 得打开
    chrisy4382
        3
    chrisy4382  
    OP
       2023-10-27 00:34:28 +08:00
    @riddle4ever 我的 SSH 是可以正常使用的,而且发现那两条关闭和启动 sshd 的命令实际控制了设置里的那个开关
    @MrKrabs 感谢,我试试
    julyclyde
        4
    julyclyde  
       2023-10-27 12:42:10 +08:00
    能确认 Mac 的 sshd 用的 sshd_config 就是你改的那个路径吗?
    以及,mac 上有 usePAM 这个东西吗??
    chrisy4382
        5
    chrisy4382  
    OP
       2023-10-27 16:38:20 +08:00 via iPhone
    @julyclyde 我看了一些问题,有些说是/etc/ssh/sshd_config 有些说是/private/etc/ssh/sshd_config ,但是我测试了下这两个文件是同步变化的;他们好像在比较早的 macOS 版本上可以成功生效;
    有没有 usePAM 我不清楚,他这个原本是被注释掉的 no ,我看有些文章把这个启用了并且改成了 yes ,但是我用起来好像没什么区别
    julyclyde
        6
    julyclyde  
       2023-10-27 18:41:18 +08:00
    @chrisy4382 我看了 man sshd 提示确实是/etc/ssh/sshd_config

    你提问说的“生效”到底是啥意思?我在你的陈述里没看到你“想要”做什么,只看到你做过了什么
    chrisy4382
        7
    chrisy4382  
    OP
       2023-10-27 21:33:37 +08:00 via iPhone
    @julyclyde 就是我想要换个端口并且禁止密码登录,但是修改并重启完之后还是只能用 22 端口,依旧可以用密码登录
    julyclyde
        8
    julyclyde  
       2023-10-28 13:00:19 +08:00
    哦。我这里 macOS sonoma 版本。看了一下进程树和 plist ,大概明白了

    开启“远程管理”然后 ssh 到本机,然后查看进程树,发现
    ps 的父进程是-zsh (横线开头表示 login shell 类型)
    -zsh 的父进程是 sshd: 用户名 @ttys001
    然后这个 sshd 的父进程是 sshd: 用户名[priv]
    再父进程就是 1 号了

    比一般 linux 的 sshd 缺一个 sshd listen 进程

    查看 plist 发现里边有一句 inetdCompatibility ;以及,Listeners 的 SockServiceName 为 ssh
    所以实际上监听端口的是 launchd 而不是 sshd ;监听端口号为 ssh 也就是/etc/services 文件里列出的 ssh 这一行
    改过之后需要让 launchd 知道变动才可以生效。这事和 sshd 已经没啥关系了

    至于密码登录,我猜你查的大概也都是 linux 方面的资料。
    首先要区分,Password 和 ChallengeResponse 两种 ssh 验证方式。前者叫密码验证,后者可以是密码验证(看 PAM 里咋设置的)
    按你的需求,这俩选项都需要关闭才可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1442 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.