首页 新闻 会员 周边 捐助

CentOS 上升级OpenSSH8.2p1的正确方式是什么?

0
悬赏园豆:20 [待解决问题]

最近要升级CentOS(具体版本是CentOS6.4和CentOS7.6)上的OpenSSH,从默认的版本更新到OpenSSH 8.2。在网上查了很多相关的资料,大部分介绍的是通过编译OpenSSL和OpenSSH源码的方式。
第一步,OpenSSL 1.1.1d的更新过程还容易明白点儿,我编译时都用的默认的安装路径,即config时不带任何选项,这样安装路径默认为/usr/local;make和make install之后,echo '/usr/local/lib64'>>/etc/ld.so.conf,然后执行ldconfg,无需替换任何文件,openssl version显示为跟新的版本。
第二步,为了配合OpenSSH,按照网文的介绍,OpenSSL编译时需要config shared,即带一个shared选项,这样OpenSSH在configure时就不会找不到已安装的Openssl Library了。但是,我遇到的,相同的Linux环境,同样是编译OpenSSL时,config shared,但是在OpenSSH的configure阶段,还是会遇到下列情形:
checking OpenSSL header version... 1010100f (OpenSSL 1.1.1d 10 Sep 2019)
checking for OpenSSL_version... no
checking for OpenSSL_version_num... no
checking OpenSSL library version... not found
configure: error: OpenSSL library not found.

这个时候,我就将升级后的OpenSSL 1.1.1d的/usr/local/lib64下的文件全部拷贝到/usr/lib64下,并替换已有的文件;有时候也会做个文件链接,主要是libcrypto.so->libcrypto.so.1.1和libssl.so->libssl.so.1.1这两个文件:
更新前:

cd /usr/lib64

ls -ls libssl.so*

0 lrwxrwxrwx. 1 root root 16 3月 28 16:16 libssl.so -> libssl.so.1.0.2k
0 lrwxrwxrwx. 1 root root 16 3月 28 16:16 libssl.so.10 -> libssl.so.1.0.2k
460 -rwxr-xr-x. 1 root root 470376 8月 9 2019 libssl.so.1.0.2k

ls -l libcrypto.so*

lrwxrwxrwx. 1 root root 19 3月 28 16:16 libcrypto.so -> libcrypto.so.1.0.2k
lrwxrwxrwx. 1 root root 19 3月 28 16:16 libcrypto.so.10 -> libcrypto.so.1.0.2k
-rwxr-xr-x. 1 root root 2521144 8月 9 2019 libcrypto.so.1.0.2k

更新后:
[root@ds1 lib64]# ls -ls libssl.so*
0 lrwxrwxrwx. 1 root root 30 5月 23 11:48 libssl.so -> /usr/local/lib64/libssl.so.1.1(新版本的)
0 lrwxrwxrwx. 1 root root 16 3月 28 16:16 libssl.so.10 -> libssl.so.1.0.2k
460 -rwxr-xr-x. 1 root root 470376 8月 9 2019 libssl.so.1.0.2k
0 lrwxrwxrwx. 1 root root 16 3月 28 16:16 libssl.so.old -> libssl.so.1.0.2k(原来的)

[root@ds1 lib64]# ls -l libcrypto.so*
lrwxrwxrwx. 1 root root 33 5月 23 11:50 libcrypto.so -> /usr/local/lib64/libcrypto.so.1.1(新版本的)
lrwxrwxrwx. 1 root root 19 3月 28 16:16 libcrypto.so.10 -> libcrypto.so.1.0.2k
-rwxr-xr-x. 1 root root 2521144 8月 9 2019 libcrypto.so.1.0.2k
lrwxrwxrwx. 1 root root 19 3月 28 16:16 libcrypto.so.old -> libcrypto.so.1.0.2k(原来的)

这样处理后,OpenSSH在configure阶段就能正常找到OpenSSL Library了。

现在遇到的问题是,安装完OpenSSH 8.2之后,是否有需要进行替换的文件??
因为configure不带任何选项,默认也是安装在/usr/local下,配置文件安装在/usr/local/etc/下面。我只需要修改/usr/local/etc/sshd_config文件中的PermitRootLogin为yes即可,systemct restart sshd是没有问题的,ssh -V也能显示出正确的更新后的版本:

ssh -V

OpenSSH_8.2p1, OpenSSL 1.1.1d 10 Sep 2019

我要是按照网上介绍的,OpenSSH升级后替换文件,比如:

  1. cp /usr/local/etc/sshd_config /etc/ssh/sshd_config
  2. cp /usr/local/sbin/sshd /usr/sbin/sshd
  3. cp /usr/local/bin/ssh /usr/bin/ssh
  4. cp /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
  5. cp /usr/local/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub

执行systemctl restart sshd时,反而出现启动超时的挂起状态,接着sshd自动重新启动,一直是activating状态:

systemctl status sshd

● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: activating (start) since Sun 2020-05-24 16:33:08 CST; 1min 13s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 71318 (sshd)
CGroup: /system.slice/sshd.service
└─71318 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

May 24 16:33:08 192.168.0.130 systemd[1]: Starting OpenSSH server daemon...
May 24 16:33:08 192.168.0.130 sshd[71318]: Server listening on 0.0.0.0 port 22.
May 24 16:33:08 192.168.0.130 sshd[71318]: Server listening on :: port 22.

xshell也能通过ssh连接上来。不晓得问题处在什么地方。
注释:上面替换openssh相关文件中,第1个,我觉得没必要,因为更新后加载openssh配置文件,直接读取的是/usr/local/etc/sshd_config;第2个,可能需要替换,因为sshd.service中
执行的是这个路径/usr/sbin/sshd,不是/usr/local/sbin/sshd:

cd /etc/systemd/system/multi-user.target.wants/

vi sshd.service

[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

至于,第3步~第5步不清楚为什么要替换。当时执行完这几步之后,systemctl start sshd就不正常了。。。。😢😢😢

有没有哪位大神可以指点迷津的???

waitfeiyan的主页 waitfeiyan | 初学一级 | 园豆:182
提问于:2020-05-24 17:19
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册