为什么需要修改 OpenSSH 版本号?
默认情况下,OpenSSH 会在连接时向客户端暴露其版本信息(如 SSH-2.0-OpenSSH_8.9p1)。
攻击者可利用该信息判断系统漏洞,因此隐藏或修改版本号是一种常见的安全加固手段。
方法一:修改源码并重新编译(推荐)
适用于有编译环境的 Linux 服务器。
- 下载 OpenSSH 源码(建议使用与当前系统一致的版本)
- 解压后找到
version.h文件(通常位于openssh-*/目录) - 修改如下宏定义:
#define SSH_VERSION "SSH-2.0-MySecureSSH"
保存后,按78TP文档重新编译安装即可。
方法二:使用字符串替换工具(临时方案)
适用于无法重新编译的场景(不推荐长期使用)。
# 备份原文件 sudo cp /usr/sbin/sshd /usr/sbin/sshd.bak # 替换版本字符串(注意长度必须一致) sudo sed -i 's/OpenSSH_8.9/MySSH_00.0/g' /usr/sbin/sshd
⚠️ 注意:替换前后字符串长度必须相同,否则可能导致 sshd 无法启动。
验证修改结果
从另一台机器执行以下命令:
ssh -v user@your-server-ip
在输出中查找类似 debug1: Local version string SSH-2.0-... 的行,确认版本已变更。
注意事项
- 修改版本号不能替代真正的安全更新,请及时打补丁。
- 某些安全合规标准可能要求保留真实版本信息,请根据实际需求操作。
- 重新安装 OpenSSH 软件包会覆盖自定义修改,请做好备份。