说明:
传安装包,所有安装包放在 /home 下
#### 是相关注释部分与报错处理部分
升级前先做好备份并开启telnet服务。
1、 安装telnet
检查 是否 已经安装 telnet
[root@slave-01 ~]# rpm -qa|grep telnet*
telnet-server-0.17-64.el7.x86_64
telnet-0.17-64.el7.x86_64
如果没有安装则安装 telnet
yum install telnet telnet-server -y
开启 telnet 服务 ## CentOS 7 中 没有 vi /etc/xinetd.d/telnet 将 disabled yes 改为no 这步
systemctl start telnet.socket
systemctl enable telnet.socket
测试telnet正常登入后开始升级
telnet XXXXXX
备份 /etc/securrtty (根用户可以登录终端设备列表)
cp /etc/securrtty /etc/securetty.bak
2.升级openssl
先升级openssl, 一定记得加上 shared选项, 否则openssh编译的时候会找不到新安装的openssl的library,
会报错: openssl的 header和library版本不匹配。
tar zxvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config --prefix=/usr/openssl shared zlib && make && make install
## 编译 ssl 时, 报 找不到 zlib ,则 补安 zlib ####
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure && make && make install
##################################################
mv /usr/bin/openssl /usr/bin/openssl-old
mv /usr/include/openssl /usr/include/openssl-old
ln -s /usr/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/openssl/include/openssl /usr/include/openssl
cp -p /etc/ld.so.conf /etc/ld.so.conf-old
echo "/usr/openssl/lib">> /etc/ld.so.conf
ldconfig -v
*用命令查看openssl version -a 查看openssl版本是否正确。
vi /etc/profile 添加:
export LIBPATH=/usr/openssl/lib:$LIBPATH
export LD_LIBRARY_PATH=/usr/openssl/lib:$LD_LIBRARY_PATH
export PATH=/usr/openssl/bin:/usr/openssh/bin:$PATH
source /etc/profile
3.升级openssh
mv /etc/init.d/sshd /etc/init.d/sshd-old #### Linux 7 没有这个文件#####
mv /etc/ssh /etc/ssh-old
mkdir /etc/ssh
检查是否安装 pam-devel 包
[root@zk01 ~]# rpm -qa|grep pam-devel*
pam-devel-1.1.8-12.el7_1.1.x86_64 ## 需要此包 ,否则报 PAM 错误
tar zxvf openssh-7.3p1.tar.gz
cd openssh-7.3p1
./configure --prefix=/usr/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/openssl --mandir=/usr/share/man --with-zlib --with-pam --with-md5-passwords --with-kerberos5 && make && make install
## 如果编译 ssh 时, 报 krb5.h: No such file or directory , 则依赖补包 #########
[root@localhost openssh-7.3p1]# yum -y install krb5-devel*
#################################################################################
ssh -V
mv /usr/bin/ssh /usr/bin/ssh.old
ln -s /usr/openssh/bin/ssh /usr/bin/ssh
cp -p /home/openssh-7.3p1/contrib/redhat/sshd.init /etc/init.d/sshd
##### linux 7 中不做此操作步骤,否则开启 UsePAM yes 后,限制多次ssh登陆失败 ,报 Permission denied, please try again.####
##### cp -p /home/openssh-7.3p1/contrib/redhat/sshd.pam /etc/pam.d/sshd ############################################
chown root:root /etc/init.d/sshd
修改/etc/init.d/sshd 文件的内容:
SSHD=/usr/sbin/sshd==》SSHD=/usr/openssh/sbin/sshd
/usr/bin/ssh-keygen==》/usr/openssh/bin/ssh-keygen -A
vi /etc/ssh/sshd_config
添加两行
PermitRootLogin yes
UsePAM yes
限制远程ssh多次登入失败的用户
在 /etc/pam.d/sshd 第一行下即#%PAM-1.0的下面添加
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600
account required pam_tally2.so
sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config
sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/ssh_config
service sshd restart
重启ssh服务
/etc/init.d/sshd restart
4.测试ssh
ssh -V
测试能否ssh localhost 以及 异机 ssh (注意核实 能否正常ssh登录、限制用户登入失败次数是否生效)
查看某个用户登入失败次数 #pam_tally2 --user [user]
清空某个用户失败次数 #pam_tally2 -u [user] --reset
5.如果ssh成功的话,关闭telnet 。 否则回退
systemctl stop telnet.socket
systemctl disable telnet.socket