当前位置:网站首页>OpenSSH的升级、版本号的修改

OpenSSH的升级、版本号的修改

2022-04-23 14:10:00 小灰墩墩

升级OpenSSH

系统版本:

[root@centos7 ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

1、升级OpenSSH前,最好开启系统上的Telnet服务,通过Telnet连接系统进行升级操作。以防OpenSSH升级出现问题而连接不上系统。

2、备份/etc/ssh

[root@centos7 ~]# cp -rp /etc/ssh /etc/ssh.bak

3、安装必要的软件

[root@centos7 ~]# yum install gcc zlib zlib-devel openssl-devel

4、查看当前OpenSSH版本

[root@centos7 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@centos7 ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

5、下载OpenSSH新版本

https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

[root@centos7 ~]# curl -O https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz

6、编译

[root@centos7 ~]# tar xvf openssh-8.6p1.tar.gz
[root@centos7 ~]# cd openssh-8.6p1/
[root@centos7 openssh-8.6p1]# ./configure
[root@centos7 openssh-8.6p1]# make && make install 

如果没报错的话,说明升级成功了。

执行ssh -V就能看到OpenSSH的客户端升级成功了。

[root@centos7 openssh-8.6p1]# ./ssh -V
OpenSSH_8.6p1, OpenSSL 1.0.2k-fips  26 Jan 2017

7、配置

上面只能说明OpenSSH的客户端开始使用新版本了,但openssh-server服务端还是在用旧版的。

所以我们还需要修改一下ssh的服务文件,让它开始使用新的版本。

如果前面./configure没指定位置的话,编译后新的sshd服务文件默认是/usr/local/sbin/sshd

我们需要修改sshd的服务文件,指向这个新的sshd文件。

CentOS6和CentOS7系统修改方法不一样。

CentOS6

CentOS6系统:

#vim /etc/rc.d/init.d/sshd

SSHD=/usr/local/sbin/sshd

启用新的sshd后,由于新版本的OpenSSH默认不允许root用户登录,如果需要使用root远程登录,还需要做一下设置。如果不需要,可以直接重启服务。

新的OpenSSH的配置文件是在/usr/local/etc/这个目录下,编辑/usr/local/etc/sshd_config:

# vim /usr/local/etc/sshd_config

PermitRootLogin yes
 
重启服务

#service sshd restart

CentOS7

禁用原先的SSH服务,并移除服务文件

[root@centos7 ]# systemctl disable sshd

[root@centos7 ]# mv /usr/lib/systemd/system/sshd.service /ssh.service

[root@centos7 openssh-8.6p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd^C
        
[root@centos7 openssh-8.6p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd

[root@centos7 openssh-8.6p1]# cp contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

[root@centos7 openssh-8.6p1]# chmod +x /etc/init.d/sshd

[root@centos7 ~]# vim /etc/init.d/sshd

SSHD=/usr/local/sbin/sshd

#启用新的sshd后,由于新版本的OpenSSH默认不允许root用户登录,如果需要使用root远程登录,还需要做一下设置。如果不需要,可以直接重启服务。
#新的OpenSSH的配置文件是在/usr/local/etc/这个目录下,编辑/usr/local/etc/sshd_config:
[root@centos7 ~]# vim /usr/local/etc/sshd_config 
PermitRootLogin yes

8、重启服务

[root@centos7 ~]# sytemctl daemon-reload
[root@centos7 ~]# systemctl enable --now sshd

注意:如果ssh -V还是之前的版本号,请which ssh 从openssh-8.6p1.tar.gz这个包中找到ssh并替换

# mv /usr/bin/ssh /tmp/
# source /etc/profile
# ssh -V
OpenSSH_8.6p1, OpenSSL 1.0.2k-fips  26 Jan 2017

修改Openssh版本号

1、查看版本号

[root@centos7 ~]# sshd -V
unknown option -- V
OpenSSH_8.6p1, OpenSSL 1.0.2k-fips  26 Jan 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

2、查看sshd位置

[root@centos7 ~]# which sshd
/usr/local/sbin/sshd

3、备份sshd

[root@centos7 ~]# cp /usr/local/sbin/sshd /usr/local/sbin/sshd.bak

4、查看sshd版本号有关的字符串(可选)

[root@centos7 ~]# strings /usr/local/sbin/sshd | grep 8.6 
OpenSSH_8.6p1
OpenSSH_8.6
FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF
.......

5、修改sshd版本号

[root@centos7 ~]# sed -i 's/OpenSSH_8.6/OpenSSH_9.9/g' /usr/local/sbin/sshd

6、查看版本号

[root@centos7 ~]# sshd -V
unknown option -- V
OpenSSH_9.9p1, OpenSSL 1.0.2k-fips  26 Jan 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

说明:sshd为服务端ssh为客户端,如果ssh中的版本号一样想修改那使用同样的操作步骤修改即可;版本号9.9可以躲过扫描器扫描但敏感的的一看就知道人为修改过,好像直接不要版本号也不影响使用。

版权声明
本文为[小灰墩墩]所创,转载请带上原文链接,感谢
https://blog.csdn.net/swyer_66/article/details/118105875