openssh升级碰到的各种问题解决方法

 

openssh下载:https://www.openssh.com/

openssl下载:https://www.openssl.org/

注:openssh需要配套openssl使用

软件包安装和编译安装的区别:

软件包安装:

yum  provides  ssh  //查看openssh安装包(系统默认已安装)

openssh升级碰到的各种问题解决方法

yum install openssh  -y   //安装openssh

rpm  -qa  | grep  openssh   //查看openssh安装包的版本

openssh升级碰到的各种问题解决方法

ssh   -V   //查看openssh和配套openssl版本(环境变量未改变时使用)

openssh升级碰到的各种问题解决方法

查找ssh命令所在目录: find  /   -name  ssh , /usr/bin/ssh目录下 bin目录为命令所在目录,sbin目录为服务所在目录)

openssh升级碰到的各种问题解决方法

openssh升级碰到的各种问题解决方法

 

查看动态链接库(openssh的动态链接库由openssl提供):

openssh升级碰到的各种问题解决方法

查看ssh状态:systemctl  status  sshd

openssh升级碰到的各种问题解决方法

编译安装目录:

在编译安装程序的时候,如果没有指定安装目录,一般默认安装在/usr/local目录下,服务在/usr/local/sbin ,软件在 /usr/local/bin , 配置文件在 /usr/local/etc  动态链接库在 /usr/local/lib64(lib),可指定安装目录 ,命令可以用 ./configure   --help 查看

启动服务:  /usr/local/sbin/sshd  

关闭服务: ps  aux  |  grep   sshd   ,找到PID ,然后kill  -9   PID

开机自启: chmod  +x   /etc/rc.d/rc.local   //redhat 7里面首次需要修改该文件权限

echo  “/usr/local/sbin/sshd ”  >>  /etc/rc.d/rc.local

注:需要关闭系统原来的sshd服务,否则会出现端口冲突。

注:升级openssh可以直接下载openssh包,编译安装,但是可能出现无法识别到库,或者版本不对问题。当出现该问题时,可以在openssl官网下载最新的openssl安装包,然后新安装openssl

以下举例另外安装opensshopenssl

操作系统版本: redhat  7.3

openssh版本:

openssh升级碰到的各种问题解决方法

 

1、上传opensshopenssh包,可使用

rz命令进行上传,改命令由lrzsz-0.12.20-36.el7.x86_64 提供

 

2、解压安装包

file  安装包 //查看压缩方式

openssh升级碰到的各种问题解决方法

确定压缩方式,进行解压

tar  -zxvf  安装包

 

3、安装openssl

mkdir  /usr/local/openssl-1.1.1d  //创建和openssl版本相同的目录名(便于后期升级进行识别以及卸载)

进入openssl目录

./config  --prefix=/usr/local/openssl-1.1.1d    //prefix:指定安装目录

make  && make  install  //进行编译安装

make  uninstall   //卸载,或者删除安装目录 rm  -fr  /usr/local/openssl-1.1.1d

安装完成,查看openssl版本:

openssh升级碰到的各种问题解决方法

此时出现了没有库文件情况。

进入到安装目录:

cd /usr/local/openssl-1.1.1d

查看命令需要的库文件:

openssh升级碰到的各种问题解决方法

将库文件写入库配置目录

openssh升级碰到的各种问题解决方法

重新加载库:ldconfig  -v

重新查看版本:(当前在openssl安装目录下,使用命令./bin/openssl  version  -a 查看版本以及调用的库文件)

openssh升级碰到的各种问题解决方法

 

4、安装openssh

mkdir   /usr/local/openssh-8.1p1   //创建新的安装目录,目的同上

进入解压目录:

./configure --prefix=/usr/local/openssh-8.1p1  --with-ssl-dir=/usr/local/openssl-1.1.1d

prefix为指定程序安装目录,--with-ssl-dir是指定调用的openssl,指定openssl的安装目录

出现报错:zlib没有安装,安装后再次执行上面命令即可

configure: error: *** zlib.h missing - please install first or check config.log ***

yum install -y  zlib*.

检查完毕,执行make  &&  make  install 安装即可

openssh升级碰到的各种问题解决方法

验证安装:

openssh升级碰到的各种问题解决方法

 

5、最后操作,使用新openssh版本

注:如果是在虚拟化平台上,建议进入虚拟化操控台界面操作,否则请开启telnet服务,以供临时使用。

systemctl  status  sshd  //查看系统的sshd服务状态如果是运行的,则关闭

systemctl  stop  sshd

systemctl  disable  sshd   //关闭系统sshd服务开机自启(也可以卸载系统的openssh服务,如果已经使用的编译安装的sshd服务,则用kill干掉进程,然后查看是否在开启自启服务中,如果在,则删除行,该操作会在后面讲到)

注:新安装的sshd服务默认不允许root直接远程登录,首先需要创建其他账户,然后使用其他账户进行远程登录,再登陆到root账户,如果需要root用户远程登录,则需要修改配置文件sshd_config,在/usr/local/openssh-8.1p1/etc/sshd_config

修改配置文件,然后重启服务

PermitRootLogin  yes 

 

/usr/local/openssh-8.1p1/sbin/sshd   //启动新服务

检查服务是否启动

openssh升级碰到的各种问题解决方法

使用新sshd版本连接:

openssh升级碰到的各种问题解决方法

设置服务开机自启:

cd  /etc/rc.d

ls   -l    //查看rc.local文件是否有x权限

openssh升级碰到的各种问题解决方法

chmod  +x  rc.local   //赋予可执行权限

echo  /usr/local/openssh-8.1p1/sbin/sshd   >>  rc.local

验证是否正确

cat  rc.local

将启动命令放入该文件中(如果以前有编译安装的sshd程序在该文件中,则将以前的自启动命令移除

注:编译安装的程序建议直接用绝对路径执行命令,无需加载如环境变量。