银河麒麟V10(含SP1)SSH服务端默认配置文件路径是/etc/ssh/sshd_config,该路径由systemd服务单元中ExecStart的-f参数指定,且sshd命令默认只认此路径;/etc/ssh/ssh_config和~/.ssh/config为客户端配置,不影响服务端行为。

银河麒麟V10(含SP1)的SSH服务默认配置文件路径是 /etc/ssh/sshd_config,不是 /etc/ssh/ssh_config,也不是其他变体——这点必须确认清楚,否则改错文件白忙一场。
怎么快速确认当前系统用的是哪个配置路径
不同Linux发行版或麒麟旧版本可能有差异,但V10系列统一使用OpenSSH标准布局。最稳妥的方式不是凭记忆,而是直接查服务加载的实际参数:
- 运行
sudo systemctl cat ssh或sudo systemctl cat sshd,查看服务单元文件中ExecStart=行是否带-f参数;若带(如ExecStart=/usr/sbin/sshd -D $SSHD_OPTS -f /etc/ssh/sshd_config),就坐实了路径 - 用
sshd -T | grep -i config会报错(该选项在OpenSSH_8.2p1中不支持),但sshd -t -f /etc/ssh/sshd_config可验证该路径是否存在且语法合法 - 如果执行
which sshd得到/usr/sbin/sshd,那它默认只认/etc/ssh/sshd_config,不会自动 fallback 到别处
为什么不能只看 ssh_config 或 ~/.ssh/config
这两个是客户端配置,控制你「怎么连别人」;而远程登录服务端行为(比如是否允许密码、能否 root 登录、监听哪个端口)全由服务端配置 sshd_config 决定。新手常把二者混淆,改了半天 ~/.ssh/config,却发现服务器根本没开密码登录——那是 /etc/ssh/sshd_config 里 PasswordAuthentication no 在起作用。
-
/etc/ssh/ssh_config:影响ssh user@host命令的行为(如默认端口、跳转代理) -
~/.ssh/config:仅对当前用户生效,可覆盖系统级ssh_config -
/etc/ssh/sshd_config:唯一控制「别人能不能连你」「以什么方式连你」的文件
常见误操作与排查线索
改完 sshd_config 却不生效?大概率卡在这几个环节:
- 忘记重启服务:
sudo systemctl restart ssh(注意:V10桌面版服务名是ssh,不是sshd;systemctl status ssh能看到实际 unit 名) - 改了文件但权限不对:
/etc/ssh/sshd_config必须是 root 可读(644),否则sshd启动时会静默拒绝加载并沿用内置默认值 - 防火墙或安全中心拦截了连接,导致你以为“配置没生效”,其实是连不到进程——先用
sudo ss -tlnp | grep :22确认sshd真正在监听,再查连接通不通 - 编辑时用了中文全角符号(比如冒号、等号),或缩进用了混合空格/tab,会导致解析失败;
sudo sshd -t可提前校验语法
真正麻烦的不是找不到路径,而是改了之后不知道哪一步断了链。每次调整,建议按「改配置 → sshd -t 校验 → systemctl restart ssh → ss -tlnp | grep ssh 确认监听 → 本地 ssh localhost 测试」这个最小闭环走一遍,比反复猜强得多。

















