# cd /usr/src/usr.bin
# tar zxvf .../openssh-9.6.tar.gz
# cd ssh
# make obj
# make cleandir
# make depend
# make
# make install
# cp ssh_config sshd_config /etc/ssh # (optional)
先查看系统版本
在 Ubuntu/Debian、CentOS/RHEL 系统上,你可以使用不同的命令来查看 Linux 系统的版本信息。
1. 查看 Ubuntu/Debian 版本:
```
lsb_release -a
```
或者
```
cat /etc/os-release
```
这些命令将输出包含系统版本信息的文本,其中包括发行版名称、发行版版本和系统内核版本等。
2. 查看 CentOS/RHEL 版本:
```
cat /etc/redhat-release
```
这个命令将直接输出 CentOS 或 RHEL 的版本信息。
除了上面这些命令外,你还可以使用以下命令来获取系统内核版本:
```
uname -a
```
这个命令将输出包含内核版本的详细信息。
请根据你所使用的具体 Linux 发行版本选择适当的命令查看系统版本信息。
可以使用hostnamectl该命令查看系统
hostnamectl
我的是
AnolisOS 8系统
升级需要关闭防火墙服务;关闭selinux服务;
升级过程中需要刷新lib库:ldconfig -v;
升级顺序:顺序是zlib库-> libressl -> openssh;
升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel依赖包;
一、安装包准备:
软件 | 版本 | 下载地址 |
openssh | 9.6p1 | https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz |
zlib | 1.3 | |
libressl | 3.8.2 | https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.8.2.tar.gz |
二、升级前环境准备
1、将上文下载的三个文件上传至服务器,目录可自行设定,方便即可。
zlib-1.3.tar.gz
libressl-3.8.2.tar.gz
openssh-9.6p1.tar.gz
2、关闭系统防火墙
systemctl stop firewalld.service
3、关闭SElinux
检查是否关闭:
getenforce
如果未关闭,关闭之
setenforce 0
上面只是临时关闭了,重启后不生效。下面改配置文件,使永久生效。
vi /etc/selinux/config
修改:
SELINUX=disabled
保存退出。
4、安装相关依赖包
下载不下来更换源
备份
mv /etc/yum.repos.d/AnolisOS-BaseOS.repo/etc/yum.repos.d/AnolisOS-BaseOS.repo.backup.3
下载
wget -O /etc/yum.repos.d/AnolisOS-BaseOS.repo://mirrors.cloud.tencent.com/repo/centos8_base.repo
现在阿里云dockece有问题下载不到,用清华源的
cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
注意该文件的源并不是指向清华源,所以需要修改docker-ce.repo
修改源。修改前面的linux的父目录
vim docker-ce.repo
原来的:baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
原来的:baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable
vim命令快速修改
:%s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@
从源上下载的docker-ce.repo与官方下载的是一样的,需要将文件内容中的download.docker.com也改成mirrors.nju.edu.cn/docker-ce
使用vim编辑配置文件
vim /etc/yum.repos.d/docker-ce.repo
按i进入编辑模式
按ESC退出编辑模式
退出编辑模式后按“:”进入命令模式
命令模式输入”%s/源字符串/目的字符串/g“批量替换
%s/download.docker.com/mirrors.tuna.tsinghua.edu.cn\/docker-ce/g
输入后提示有24项被替换
源链接中有“/”字符,需要在其前面加上”\“字符转义
最后的参数g表示全局匹配,有其他的参数可自行百度
命令模式输入wq保存退出
---------------------------------------------------------------
首先更新全部
sudo yum update
yum install -y wget gcc libselinux-devel openssl-devel make perl zlib zlib-devel pam pam-devel
安装完毕后执行下面命令,确保所有依赖包正常安装
rpm -qa | egrep "gcc|make|perl|zlib|zlib-devel|pam|pam-devel"
二、升级前环境准备
1、停止ssh服务,备份ssh配置文件
systemctl stop sshd
cp -r /etc/ssh /etc/ssh.old
备份sshd.service文件
cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target
[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
备份opensshserver.config配置文件
cat /etc/crypto-policies/back-ends/opensshserver.config
CRYPTO_POLICY='-oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc -oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512 -oGSSAPIKexAlgorithms=gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1- -oKexAlgorithms=curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -oHostKeyAlgorithms=ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com -oPubkeyAcceptedKeyTypes=ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com -oCASignatureAlgorithms=ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-256,rsa-sha2-512,ssh-rsa'
备份sshd 配置文件
cat /etc/sysconfig/sshd
# Configuration file for the sshd service.
# The server keys are automatically generated if they are missing.
# To change the automatic creation, adjust sshd.service options for
# example using systemctl enable sshd-keygen@dsa.service to allow creation
# of DSA key or systemctl mask sshd-keygen@rsa.service to disable RSA key
# creation.
# Do not change this option unless you have hardware random
# generator and you REALLY know what you are doing
SSH_USE_STRONG_RNG=0
# SSH_USE_STRONG_RNG=1
# System-wide crypto policy:
# To opt-out, uncomment the following line
# CRYPTO_POLICY=
这个时候千万不能断开链接
2、查看系统原有openssh包
rpm -qa | grep openssh
openssh-8.0p1-5.an8.x86_64
openssh-server-8.0p1-5.an8.x86_64
openssh-clients-8.0p1-5.an8.x86_64
根据上面查询出的结果,卸载系统里原有Openssh(一般有三个包,全部卸载)
rpm -e --nodeps xxxxxxxxxx
rpm -e --nodeps openssh-8.0p1-5.an8.x86_64
rpm -e --nodeps openssh-server-8.0p1-5.an8.x86_64
rpm -e --nodeps openssh-clients-8.0p1-5.an8.x86_64
卸载完成后执行rpm -qa | grep openssh,确保没有回显
rpm -qa | grep openssh
卸载openssh-8.0p1 后检查sshd.service 文件,已删除。
systemctl status sshd
Unit sshd.service could not be found.
[root@anolis8 ~]# ll /usr/lib/systemd/system/sshd.service
ls: 无法访问'/usr/lib/systemd/system/sshd.service': 没有那个文件或目录
[root@anolis8 ~]# ll /etc/sysconfig/sshd
ls: 无法访问'/etc/sysconfig/sshd': 没有那个文件或目录
[root@anolis8 ~]# ll /etc/crypto-policies/back-ends/opensshserver.config
lrwxrwxrwx. 1 root root 52 9月 26 17:54 /etc/crypto-policies/back-ends/opensshserver.config -> /usr/share/crypto-policies/DEFAULT/opensshserver.txt
[root@anolis8 ~]# ll /usr/share/crypto-policies/DEFAULT/opensshserver.txt
-rw-r--r--. 2 root root 1663 6月 24 2021 /usr/share/crypto-policies/DEFAULT/opensshserver.txt
[root@anolis8 ~]# cat /usr/share/crypto-policies/DEFAULT/opensshserver.txt
CRYPTO_POLICY='-oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc -oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512 -oGSSAPIKexAlgorithms=gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1- -oKexAlgorithms=curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -oHostKeyAlgorithms=ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com -oPubkeyAcceptedKeyTypes=ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com -oCASignatureAlgorithms=ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-256,rsa-sha2-512,ssh-rsa'
3、编译安装zlib
tar xzvf zlib-1.3.tar.gz
cd zlib-1.3/
./configure --prefix=/usr/local/zlib
make
make install
验证zlib安装是否成功,要包含include、lib、share三个目录。
# ll /usr/local/zlib/
总用量 0
drwxr-xr-x 2 root root 35 9月 26 15:05 include
drwxr-xr-x 3 root root 91 9月 26 15:05 lib
drwxr-xr-x 3 root root 17 9月 26 15:05 share
新建并编辑配置文件:
vi /etc/ld.so.conf.d/zlib.conf
加入如下内容后保存退出
/usr/local/zlib/lib
刷新库文件,加载刚才编译安装的zlib生成的库文件
ldconfig -v
4、编译安装libressl
tar xzvf libressl-3.8.2.tar.gz
cd libressl-3.8.2/
./configure --prefix=/usr/local/libressl
make
make install
echo '/usr/local/libressl/lib' > /etc/ld.so.conf.d/libressl.conf
ldconfig -v
如下libressl库可以被系统找到
# ldconfig -p|grep /usr/local/libressl
libtls.so.25 (libc6,x86-64) => /usr/local/libressl/lib/libtls.so.25
libtls.so (libc6,x86-64) => /usr/local/libressl/lib/libtls.so
libssl.so.52 (libc6,x86-64) => /usr/local/libressl/lib/libssl.so.52
libssl.so (libc6,x86-64) => /usr/local/libressl/lib/libssl.so
libcrypto.so.49 (libc6,x86-64) => /usr/local/libressl/lib/libcrypto.so.49
libcrypto.so (libc6,x86-64) => /usr/local/libressl/lib/libcrypto.so
重命名现有文件目录
mv /usr/bin/openssl /usr/bin/openssl.bak
创建ssl相关软连接
ln -s /usr/local/libressl/bin/openssl /usr/bin/openssl
ln -s /usr/local/libressl/include/openssl /usr/include/openssl
编辑配置文件
vi /etc/ld.so.conf.d/ssl.conf
加入如下内容后保存退出
/usr/local/ssl/lib
刷新库文件,加载刚才编译安装的ssl生成的库文件
ldconfig -v
查看openssl版本
openssl version -a
5、编译安装openssh
tar xzvf openssh-9.6p1.tar.gz
cd openssh-9.6p1
./configure --prefix=/usr --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/libressl
make
修改文件权限
ll /etc/ssh
总用量 24
-rw-r-----. 1 root ssh_keys 480 6月 20 17:38 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 6月 20 17:38 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys 387 6月 20 17:38 ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 6月 20 17:38 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 2578 6月 20 17:38 ssh_host_rsa_key
-rw-r--r--. 1 root root 554 6月 20 17:38 ssh_host_rsa_key.pub
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
ll /etc/ssh
总用量 24
-rw-------. 1 root ssh_keys 480 6月 20 17:38 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 6月 20 17:38 ssh_host_ecdsa_key.pub
-rw-------. 1 root ssh_keys 387 6月 20 17:38 ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 6月 20 17:38 ssh_host_ed25519_key.pub
-rw-------. 1 root ssh_keys 2578 6月 20 17:38 ssh_host_rsa_key
-rw-r--r--. 1 root root 554 6月 20 17:38 ssh_host_rsa_key.pub
make install
.......
/usr/bin/install -c -m 644 scp.1.out /usr/share/man/man1/scp.1
/usr/bin/install -c -m 644 ssh-add.1.out /usr/share/man/man1/ssh-add.1