Openssh升级操作

openssh升级,需要root权限操作,且为防止升级异常,升级前增加telent登陆备用通道。

  • 1.安装启动telnet,telnet登陆验证

  • 2.备份ssh程序及配置,卸载openssh

  • 3.下载openssh源码包

  • 4.安装依赖

  • 5.编译

  • 6.安装

  • 7.验证

  • 8.替换ssh新二进制、配置

  • 9.自启

  • 10.授权+x

  • 11.测试

  • 12.关闭telnet

1.安装启动telnet,telnet登陆验证

若不确认telnet默认端口,则需要查看配置端口

telnet命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#安装
yum -y install telnet


#启动telnet
systemctl start telnet.socket 
#验证默认telnet端口号(默认23)
ss -ntlp |grep 端口号

#端口放行
systemctl stop firewalld
#关闭selinux
setenfoce 0

#telent登陆验证
telnet -l 用户名 主机ip 端口号

2.备份ssh程序及配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#创建备份目录
BAK_DIR=/root/bak_ssh/`date +%F_%H%M%S`
mkdir -p $BAK_DIR 
#备份ssh二进制及配置
cp -rf /etc/ssh          $BAK_DIR/#etc#ssh
cp /etc/pam.d/sshd   $BAK_DIR/#etc#pam.d#sshd
cp /etc/init.d/sshd      $BAK_DIR/#etc#init.d#sshd
cp /usr/bin/openssl      $BAK_DIR/#usr#bin#openssl

cp /usr/sbin/sshd       $BAK_DIR/#usr#sbin#sshd                 
cp /usr/bin/ssh         $BAK_DIR/#usr#bin#ssh   
cp /usr/bin/sftp        $BAK_DIR/#usr#bin#sftp  
cp /usr/bin/scp         $BAK_DIR/#usr#bin#scp   
cp /usr/bin/ssh-keygen      $BAK_DIR/#usr#bin#ssh-keygen 

卸载openssh

1
2
3
4
5
#卸载原有openssh
#yum安装的通过rpm卸载
rpm -e --nodeps `rpm -qa | grep openssh`

#编译安装的仅需mv成备份目录即可

3.下载openssh

openssh官网下载:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable

根据自己需求下载对应版本,最新版本在最下面

4.安装依赖

1
2
#安装依赖
yum install -y vim gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers libedit-devel perl-IPC-Cmd wget tar lrzsz

5.编译

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#编译
mkdir -p /root/updata/ssh_upgrade_9.8p1  
cp /tmp/openssh-9.8p1.tar.gz /root/updata/ssh_upgrade_9.8p1 
cd /root/updata/ssh_upgrade_9.8p1 
tar -xzf openssh-9.8p1.tar.gz 
cd openssh-9.8p1 
./configure  --without-openssl-header-check --prefix=/usr/local/openssh --sysconfdir=/etc/ssh 



#懒人,使用变量
# TAR_PATH=/tmp/openssh-9.8p1.tar.gz
# BUILD_INS_DIR=/usr/local/openssh
# BUILD_CONF_DIR=/etc/ssh 
# ####################################################################
# UN_DIR=`dirname $TAR_PATH`
# UN_NAME=`echo $TAR_PATH|awk -F '/' '{print $NF}'|awk -F '.' '{print $1}'`
# cd $UN_DIR
# tar -xzf $UN_DIR
# cd $UN_NAME 
# ./configure  --without-openssl-header-check --prefix=$BUILD_INS_DIR --sysconfdir=$BUILD_CONF_DIR 

6.安装

1
2
3
#四线程同时编译
make -j 4 && make install 
chmod -R 755 /usr/local/openssh/ 

7.验证新ssh

1
2
#验证新ssh
/usr/local/openssh/bin/ssh -V 

8.替换ssh新二进制、配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#二进制替换,编译完成的新的ssh到系统目录
BIND_DIR=/usr/local/openssh\r
\\cp -rf $BIND_DIR/sbin/sshd /usr/sbin/sshd 
\\cp -rf $BIND_DIR/bin/ssh /usr/bin/ssh 
\\cp -rf $BIND_DIR/bin/sftp /usr/bin/sftp 
\\cp -rf $BIND_DIR/bin/scp /usr/bin/scp 
\\cp -rf $BIND_DIR/bin/ssh-keygen /usr/bin/ssh-keygen 




#源码配置替换,源码包中的配置根据自己的需求替换
SRC_UNDIR=/root/updata/ssh_upgrade_9.8p1/openssh-9.8p1\r
\\cp -rf  $SRC_UNDIR/contrib/redhat/sshd.init /etc/init.d/sshd 
\\cp -rf  $SRC_UNDIR/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam 
\\cp -rf  $SRC_UNDIR/sshd_config /etc/ssh/sshd_config 

修改/etc/ssh/sshd_config配置中的sftp模式为internal-sftp(根据自己需求修改)

sshd中sftp模式区别

1
2
3
#修改/etc/ssh/sshd_config,注释掉原来的Subsystem 
#Subsystem       sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp

9.开机自启

1
2
3
4
5
chmod u+x /etc/init.d/sshd 
chkconfig --add sshd  
chkconfig sshd on 
chkconfig --list |grep sshd 
systemctl list-unit-files |grep sshd |grep enabled 

10.授权

1
2
3
4
#ssh+x
chmod 755 /usr/bin/ssh 
chmod 755 /usr/bin/sftp 
chmod 755 /usr/bin/ssh-keygen 

11.测试登陆

新建会话连接测试,若测试异常注意回滚!

12.关闭telnet

1
2
3
4
#关闭telnet
systemctl stop telnet.socket 
#验证telnet端口
ss -ntlp |grep 端口号