OpenSSH 升级（Unbuntu ）

一、 安装依赖

安装以下依赖包：

Copy
# 更新库
sudo apt update

# 安装依赖
sudo apt install zlib1g libpam0g-dev libssl-dev

二、 安装包下载

下载以下软件包，版本参考下载说明链接：

OpenSSL 官方下载地址: https://www.openssl.org/source/

OpenSSH 官方下载地址: https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

Zlib 官方下载地址: http://www.zlib.net/

三、 准备

验证 telnet 服务是否可用：

Copy
telnet ip

如果登录不成功，需要安装 telnet 服务：

Copy
# 安装 telnet
sudo apt-get install openbsd-inetd telnetd telnet

# 启动服务
sudo /etc/init.d/openbsd-inetd restart

# 查看 telnet 端口
netstat -anpt | grep 23

#防火墙放开 23 端口
sudo ufw allow 23

# 再次测试是否成功登陆
telnet ip

四、安装

卸载原 openssh ：

Copy
sudo apt-get remove openssh-server openssh-client

ps. 此时无法再新建 ssh 连接，所以切勿关闭当前操作界面。

1. 安装 zlib

Copy
tar -zxvf zlib-version.tar.gz
cd zlib-version
./configure --prefix=/usr/local/zlib
make && sudo make install

2. 升级 openssl

Copy
tar -zxvf openssl-version.tar.gz
cd openssl-version
./config shared zlib
make && sudo make install

加上 shared 参数，以免安装 openssh 时无法找到 zlib

2.1 移走并备份原 openssl

Copy
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
sudo mv /usr/include/openssl /usr/include/openssl.bak

2.2 创建软链接到系统位置

Copy
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/include/openssl /usr/include/openssl

2.3 将 openssl 的 lib 库添加到系统

Copy
sudo echo "/usr/local/openssl/lib64" > /etc/ld.so.conf.d/openssl.conf

# 使新添加的lib被系统找到
sudo ldconfig

2.4 查看 openssl 版本

Copy
openssl version -a

3. 升级 openssh

3.1 移走并备份原 openssh

Copy
sudo mv /etc/init.d/ssh /etc/init.d/ssh.old
sudo cp -r /etc/ssh /etc/ssh.old

3.2 升级 openssh

Copy
tar -zxvf openssh-version.tar.gz
cd openssh-version
# 需要指定openssl的安装路径
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-ssl-dir=/usr/local/openssl --with-privsep-path=/var/lib/sshd
make && sudo make install

3.3 查看当前 SSH 的版本

Copy
ssh -V
sshd -V

五、 修改还原默认配置

Copy
cd /etc/ssh
sudo mv sshd_config sshd_config.default
sudo cp ../ssh.old/sshd_config ./

# 使用原来的 /etc/init.d/ssh
sudo mv /etc/init.d/ssh.old /etc/init.d/ssh

# 取消注销指定服务
sudo systemctl unmask ssh

# 重启 sshd
sudo systemctl restart sshd

六、 关闭 Telnet 服务

停止 Telnet 服务：

Copy
sudo systemctl stop openbsd-inetd

禁用 Telnet 服务：

Copy
sudo systemctl disable openbsd-inetd

卸载 Telnet 服务器（可选）：

Copy
sudo apt remove telnetd

这将完全移除 Telnet 服务器，包括配置文件和可执行文件。

防火墙关闭 23 端口：

Copy
# 查看当前防火墙规则，并附带编号
sudo ufw status numbered

# 删除防火墙规则
sudo ufw delete <规则编号>