环境:Centos7.8
SSH版本:OpenSSH_7.4p1
如果ssh版本过低,先进行yum update
将ssh升级到OpenSSH_7.4p1
为了意外中断,造成无法远程服务器,在生产环境中,确保先安装好了telnetserver以及xinetd,在端口openssh后,还能进行远程(略)。
目前环境仅直接进行openssh的升级。
步骤:
一、下载好openssh以及openssl的包
二、安装依赖以及编辑环境
三、备份openssl并升级openssl
四、升级openssh
五、配置修改。
一 下载openssh以及openssl包
最新版本openssh链接:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
openssl下载链接:
https://ftp.openssl.org/source/openssl-1.1.1g.tar.gz
二 安装依赖以及编译环境
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel # 安装依赖以及gcc编译环境
yum install -y pam* zlib* # 安装pam以及zlib
三 备份openssl并升级openssl
关闭selinux:
setenforce 0 \
&& sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config \
&& getenforce
查看openssl版本:
# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
备份原openssl文件路径,:
# mv /usr/bin/openssl /usr/bin/openssl_bak
# mv /usr/include/openssl /usr/include/openssl_bak
解压openssl-1.1.1g.tar.gz,并进入openssl路径。进行openssl的编译安装:
#tar -xf openssl-1.1.1g.tar.gz && cd openssl-1.1.1g
#./config shared && make && make install #
# echo $? # 确认上一条命令成功执行,0为成功。
0
升级完成openssl后,升级后在的openssl的路径安装在/usr/local
下。
对升级后的openssl重做软链接,,并加载新配置:
# ln -s /usr/local/bin/openssl /usr/bin/openssl
# ln -s /usr/local/include/openssl /usr/include/openssl
# echo "/usr/local/lib64" >> /etc/ld.so.conf && /sbin/ldconfig
# openssl version # 确认openss版本
OpenSSL 1.1.1g 21 Apr 2020
四 升级openssh
下载openssh-8.3p1.tar.gz
到指定路径中,并解压,进入到openssh的路径中:
# tar -xf openssh-8.3p1.tar.gz
# cd openssh-8.3p1
迁移原shs的配置文件和目录,在进行安装
# mv /etc/ssh{,_bak}
# ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/include --with-ssl-dir=/usr/local/lib64 --with-zlib --with-md5-passwords --with-pam && make && make install
# echo $? # 验证上一条命令是否成功执行
0
五 配置修改。
# 修改配置项让root能远程登录
# sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config
sed -i "s/#UseDNS no/UseDNS no/g" /etc/ssh/sshd_config
# 在openssh中复制文件到目标位置中,并设置sshd开机自启动。
cp -a contrib/redhat/sshd.init /etc/init.d/sshd && cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam && chmod +x /etc/init.d/sshd && chkconfig --add sshd && systemctl enable sshd
# 移走原来的sshd文件,否则影响我们重启sshd服务
mv /usr/lib/systemd/system/sshd.service /tmp/ && chkconfig sshd on
验证openssh:
# systemctl restart sshd # 重启sshd
# ssh -V # 查看openssh版本
OpenSSH_8.3p1, OpenSSL 1.1.1g 21 Apr 2020
# netstat -lntp|grep 22 # 查看端口以及服务状态
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9491/sshd: /usr/sbi
下面附离线安装的脚本:
#!/bin/sh
#关闭Selinux/firewalld/iptables
setenforce 0 \
&& sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config \
&& getenforce
cd gcc+ && pwd
chmod +x install.sh && source install.sh && cd ..
cd pam-zlib && chmod +x install.sh && source install.sh && cd ..
cd perl5 && chmod +x install.sh && source install.sh && cd ..
mv /usr/bin/openssl /usr/bin/openssl_bak && mv /usr/include/openssl /usr/include/openssl_bak
cd openssl-1.1.1g && ./config shared && make && make install && echo $?
ln -s /usr/local/bin/openssl /usr/bin/openssl && ln -s /usr/local/include/openssl /usr/include/openssl && echo "/usr/local/lib64" >> /etc/ld.so.conf && /sbin/ldconfig && cd ..
cd openssh-8.3p1 && rm -rf /etc/ssh/* && ./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/include \
--with-ssl-dir=/usr/local/lib64 --with-zlib --with-md5-passwords --with-pam && make && make install && echo $?
sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config
sed -i "s/#UseDNS no/UseDNS no/g" /etc/ssh/sshd_config
cp -a contrib/redhat/sshd.init /etc/init.d/sshd && cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam && chmod +x /etc/init.d/sshd && chkconfig --add sshd && systemctl enable sshd && mv /usr/lib/systemd/system/sshd.service /tmp/ && chkconfig sshd on
网友评论