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

2023-10-26 23:32:10 +08:00
 chrisy4382

有没有用 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

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

你提问说的“生效”到底是啥意思?我在你的陈述里没看到你“想要”做什么,只看到你做过了什么
chrisy4382
2023-10-27 21:33:37 +08:00
@julyclyde 就是我想要换个端口并且禁止密码登录,但是修改并重启完之后还是只能用 22 端口,依旧可以用密码登录
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 里咋设置的)
按你的需求,这俩选项都需要关闭才可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/985811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX