### 🤖 Assistant 以下是升级 Ubuntu 20.04.4 中 OpenSSH 版本的详细步骤,结合了公开资源和核心技术要点: --- ### **核心步骤概览** 1. **依赖准备** - 升级前需同步更新 OpenSSL(OpenSSH 的加密依赖): ```bash wget https://github.com/openssl/openssl/releases/download/openssl-3.0.16/openssl-3.0.16.tar.gz tar -zxvf openssl-3.0.16.tar.gz cd openssl-3.0.16 ./config --prefix=/usr/local/openssl --shared # 关键参数 `--shared` make && make install ``` 需手动链接库文件(解决动态库路径问题): ```bash ln -s /usr/local/include/openssl /usr/include/openssl ln -sf /usr/local/lib64/libssl.so /usr/local/openssl/lib64/libssl.so echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl.conf ldconfig # 更新库缓存 ``` 来源:[1](https://blog.csdn.net/weixin_44293618/article/details/128096741)、[2](https://www.cnblogs.com/subsea/p/17682962.html) 链接openssl的二进制文件 - ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl 2. **升级 OpenSSH** - 下载并编译最新版 OpenSSH(如 9.3p2): ```bash wget https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz tar -zxvf openssh-9.3p2.tar.gz cd openssh-9.3p2 ./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/openssl make && make install ``` - 替换系统默认二进制文件: ```bash mv /usr/bin/ssh /usr/bin/ssh.bak ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh ``` 3. **服务配置与测试** - 重启 SSH 服务并验证版本: ```bash systemctl restart sshd ssh -V # 应显示新版本号 ``` - **注意事项**: - 操作前确保通过 `telnet` 或本地终端保持会话,避免升级失败导致无法远程连接(参考 [3](https://blog.csdn.net/lqh_linux/article/details/128796892))。 - 若遇到 `known_hosts` 报错,可清除 `~/.ssh/known_hosts` 中对应 IP 的记录([深信服社区](https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=128631))。 --- ### **常见问题解决** - **符号链接错误**: 若报错 `relocation error: symbol EVP_mdc2 not defined`,检查 OpenSSL 库路径是否正确链接,并重新执行 `ldconfig`([2](https://www.cnblogs.com/subsea/p/17682962.html))。 - **权限问题**: 升级后若无法 root 登录,需修改 `/etc/ssh/sshd_config` 中的 `PermitRootLogin yes` 并重启服务([4](https://www.cnblogs.com/miaojx/p/14713244.html))。 --- ### **总结** - 核心依赖:升级 OpenSSL 时务必使用 `--shared` 参数并正确配置库路径。 - 风险控制:保留备份会话,避免升级中断导致失联。 - 验证方式:通过 `ssh -V` 和实际连接测试确认版本更新。 如需更详细的配置参数或故障排查,可参考上述来源链接。