GCP上Ubuntu 18.04如何正确在sshd_config中添加MACs、KEX算法
问题根因
你遇到的报错核心原因是配置的hmac-sha1-512-etm@openssh.com算法不存在:SHA1哈希算法最大输出长度仅为160位,不存在512位的hmac-sha1变种,属于拼写错误,同时你还重复写了两次该错误算法,导致sshd校验配置失败无法启动。
正确配置sshd_config MACs项的步骤
1. 改前备份配置
每次修改sshd配置前先备份原文件,避免配置错误无法回滚:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d)
2. 确认当前系统支持的合法MAC算法
Ubuntu 18.04自带的OpenSSH版本为7.6p1,所有支持的MAC算法可以通过以下命令查询,仅能从返回结果中选择配置项:
ssh -Q mac
3. 修正MACs配置
你需求的配置修正错误、去重后的合法写法如下:
MACs hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
4. 配置合法性校验(必须操作,避免锁死实例)
修改完配置后绝对不要直接重启SSH服务,先执行配置校验命令,无任何输出则代表配置合法,有报错会直接提示错误行号和原因:
sudo sshd -t
5. 重启服务并验证连通性
校验通过后再重启SSH服务:
sudo systemctl restart ssh
重启完成后不要关闭当前已连接的SSH会话,新开一个终端窗口测试SSH连接,确认可以正常登录后再关闭旧会话。
GCP实例SSH锁死的应急修复方法
如果已经出现无法SSH连接的情况,可以通过两种方式修复:
- 启用实例的串行控制台访问,直接通过GCP控制台的串行端口登录实例,修改配置后重启SSH服务即可恢复
- 将故障实例的系统启动盘卸载,挂载到同一区域的其他正常Ubuntu实例上,修改挂载磁盘中的
/etc/ssh/sshd_config文件后卸载,挂回原实例启动即可
内容的提问来源于stack exchange,提问作者ManWarrior
相关产品推荐
相关产品推荐

