Liunx系统下,内网升级OpenSSL
2019-11-15 本文已影响0人
洛奇lodge
1、下载相关的安装包
- zlib-1.2.11.tar.gz
- openssl-1.0.2t.tar.gz
- openssh-8.1p1.tar.gz
依赖包zlib下载地址:http://www.zlib.net/
依赖包openssl下载地址:https://www.openssl.org/source/
最新的Openssh下载地址:https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/
(后面执行报错需要安装此依赖)下载PAM模块地址 http://www.linux-pam.org/library/
2、查看当前版本和服务状态
2.1、查看openssh版本
ssh -V
2.2、查看openssl版本
openssl version
2.3、查看zlib版本
find /usr/ -name zlib.pc # 找出zlib.pc的文件路径
cat /path/zlib.pc # 查看里面内容,有zlib版本显示
2.4、确认telnet服务正常开启(防止ssh升级失败,无法连接终端)
telnet 192.168.226.123
2.5、查看端口22情况
netstat -ntulp |grep 22
2.6、sshd服务情况
ps -ef | grep sshd
2.7、查看sshd文件位置(后面重启时候可能会用到,需要执行该脚本文件重启sshd)
locate sshd
3、安装步骤
- 在安装之前要确认当前版本,如果依赖包zlib和openssl版本是当前最新,则不需要重新安装依赖包
3.1、zlib安装
1、解压
tar -zxvf zlib-1.2.11.tar.gz
2、进入zlib解压目录
cd zlib-1.2.11
3、执行脚本(perfix参数是指定安装路径)
./configure --prefix=/usr/local/zlib
4、编译
make
5、安装
sudo make install
6、进入临时root操作界面
sudo -i
7、共享库注册
echo '/usr/local/zlib/lib' >> /etc/ld.so.conf.d/zlib.conf
8、更新缓存,使新添加的lib 被系统找到
ldconfig
3.2、openssl安装
1、备份原先的openssl的文件
sudo mv /usr/bin/openssl /usr/bin/openssl.old
2、解压
tar -zxvf openssl-1.0.2t.tar.gz
3、进入zlib解压目录
cd openssl-1.0.2t
4、执行脚本
./config --prefix=/usr/local/ssl --shared zlib
5、编译
make
---------------------------执行make这步,可能会出现下面错误----------------------------------
报错内容:c_zlib.c:25:19: fatal error: zlib.h: No such file or directory
Makefile:287: recipe for target 'build_crypto' failed
make: *** [build_crypto] Error 1
解决方式:1、复制软件包到指定目录 sudo cp zlib-1.2.11 /usr/local/src/zlib-1.2.11 -r
2、构建静态库
sudo -i
./configure
make test
make install
3、构建共享库
make clean
./configure --shared
make test
make install
cp zutil.h /usr/local/include
cp zutil.c /usr/local/include
-------------------------------------------------------------------------------------------
6、测试(测试通过之后,后面执行ssh升级,可以找到ssl,否则后面ssh会安装失败)
make test
7、安装
sudo make install
8、进入临时root操作界面
sudo -i
9、建立软连接(由于安装时候默认安装目录为 /usr/local/ssl/)
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
10、将openssl 的lib 库添加到系统
echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl.conf
11、使新添加的lib 被系统找到
ldconfig
3.3、Openssh安装
1、备份原先的openssh的文件
sudo mv /etc/init.d/ssh /etc/init.d/ssh.old
sudo mv /etc/ssh /etc/ssh.old
2、解压
tar -zxvf openssh-8.1p1.tar.gz
3、进入openssh解压目录
cd openssh-8.1p1
4、卸载原openssh
- 如果是原ssh以apt安装的卸载方式:sudo apt-get remove openssh-server openssh-client
- 如果是源码安装的:sudo make uninstall
5、执行脚本
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl
--with-zlib=/usr/local/zlib --with-md5-passwords
--------------------------------执行这步之后,可能会出现下面错误---------------------------
报错内容:configure: error: PAM headers not found
解决方式:1、下载pam模块
2、 进入下载的目录下,依次执行下面命令
3、 ./configure
4、 make
5、 sudo make install
-------------------------------------------------------------------------------------------
6、编译
make
7、安装
sudo make install
8、修改默认配置文件根据之前配置修改,保证配置相同
- 8.1、 vi /etc/ssh/sshd_config
- 8.2、打开sshd_config文件, 复制下面一句话
(因为更新ssh,sftp-server文件文件位置也可能会更新的)
''' Subsystem sftp /usr/libexec/sftp-server '''
- 8.3、sudo cp /etc/init.d/ssh.old /etc/init.d/ssh
- 8.4、sudo cp /etc/ssh.old/sshd_config /etc/ssh/
- 8.5、sudo vi /etc/ssh/sshd_config
- 8.6、将8.2步骤复制那句话,替换上去
9、重启服务
systemctl restart ssh
----------------------------重启服务可能会出现下面错误--------------------------------------
报错内容: Failed to restart ssh.service: Unit ssh.service is masked
解决方式: /usr/sbin/sshd 或 /etc/init.d/sshd
--------------------------------------------------------------------------------------------
4、升级后的问题
4.1 ssh升级后,可能会遇到以前经常连接服务器的客户端发出服务器的密钥已经被更改,执行下面命令
rm -rf ~/.ssh/known_hosts
4.2 服务端会出现输不了中文,以中文命名的文件会乱码
解决方式:
sudo vi /etc/profile
将下面几行写在最低行
export LC_NAME=zh_CN.UTF-8
export LC_TELEPHONE=zh_CN.UTF-8
export LC_IDENTIFICATION=zh_CN.UTF-8
export LC_MEASUREMENT=zh_CN.UTF-8
export LANG=en_US.UTF-8
export LC_TIME=zh_CN.UTF-8
export LC_NAME=zh_CN.UTF-8
使文件生效
source /etc/profile