升级ssh到最新版本

参考文章:

ssh对ssl是具有依赖关系的,需要检查这两者目前的版本

检查ssh的版本:

ssh -V

检查ssl版本:

openssl version

执行情况:

在这里插入图片描述

在openssh-8.4p1的INSTALL文件有ssh和ssl版本对应关系,以8.4的为例:

libcrypto from either of LibreSSL or OpenSSL.  Building without libcrypto
is supported but severely restricts the available ciphers and algorithms.
 - LibreSSL (https://www.libressl.org/)
 - OpenSSL (https://www.openssl.org) with any of the following versions:
   - 1.0.x >= 1.0.1 or 1.1.0 >= 1.1.0g or any 1.1.1

经过分析,我们并不需要升级ssl,只需要升级ssh,所以本文只升级ssh

注意:贸然升级ssl是不可行的,可能会导致已安装的应用依赖ssl不可用,具体参考链接2给出了如何正确升级ssl,然后升级ssh。

升级SSH

1、开启telnet访问

为了防止升级过程中通过ssh连接不到服务器,所以有必要留一条备用的连接方式。

升级方式文章1已做讲述,不再赘述

但是注意的是

1、开启telnet服务之后,可以使用ssh的用户名和密码进行telnet登录连接测试

2、关闭telnet服务器的防火墙,否则连不上

2、升级ssh

1、下载ssh相应的安装包

2、升级需要几个组件,有些是和编译相关的等

yum install  -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel  pam* zlib*

3、解压ssh安装包

[root@host-10-253-208-131 tools]# tar xfz openssh-8.4p1.tar.gz

4、给文件夹授予root权限

[root@host-10-253-208-131 tools]# chown -R root.root /data/tools/openssh-8.4p1

5、将之前的ssh目录备份,然后新建一个ssh目录

mv /etc/ssh /etc/ssh.old
mkdir /etc/ssh

6、进入openssh-8.4p1,检查、编译、安装

[root@host-10-253-208-131 tools]#  cd openssh-8.4p1
[root@host-10-253-208-131 openssh-8.4p1]# ./configure --prefix=/usr/ --sysconfdir=/etc/ssh   --with-zlib   --with-md5-passwords   --with-pam  && make && make install

# 检查是否安装成功,输出0成功
[root@host-10-253-208-131 openssh-8.4p1]# echo $?
0

如果openssl是通过编译安装的,那么它的安装位置应该不在默认的位置,所以在安装openssh时需要指定openssl的安装位置:

./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/local/openssl/include  --with-ssl-dir=/usr/local/openssl   --with-zlib   --with-md5-passwords   --with-pam  && make && make install

7、修改配置文件的内容为

[root@linux-node3 ~]# grep "^PermitRootLogin"  /etc/ssh/sshd_config
PermitRootLogin yes
[root@linux-node3 ~]# grep  "UseDNS"  /etc/ssh/sshd_config
UseDNS no
[root@linux-node3 ~]#

这里是指/etc/ssh/sshd_config这个文件的内容配置确保正确,如果不是的话需要进行修改来和上面执行的结果保持一致

8、对ssh服务进行一些配置

# 如果存在则覆盖
[root@host-10-253-208-131 openssh-8.4p1]# cp -af contrib/redhat/sshd.init /etc/init.d/sshd
[root@host-10-253-208-131 openssh-8.4p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@host-10-253-208-131 openssh-8.4p1]# chmod +x /etc/init.d/sshd
[root@host-10-253-208-131 openssh-8.4p1]# chkconfig --add sshd
[root@host-10-253-208-131 openssh-8.4p1]# systemctl enable sshd
sshd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig sshd on

# 把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务,没有的话就不用管
[root@linux-node3 ~]# mv  /usr/lib/systemd/system/sshd.service  /data/
#设置sshd服务开机启动
[root@linux-node3 ~]# chkconfig sshd on

9、测试服务的启停

# 启动
    /etc/init.d/sshd start
或
systemctl start sshd
# 关闭
/etc/init.d/sshd stop
或
systemctl stop sshd
# 重启
/etc/init.d/sshd restart
或
/etc/init.d/sshd start

10、查看ssh的版本,使用ssh工具测试连接是否正常,没问题关闭telnet服务

# 查看ssh的版本
ssh -V
# 关闭telnet
[root@host-10-253-208-131 ~]#  systemctl disable xinetd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/xinetd.service.
[root@host-10-253-208-131 ~]# systemctl stop xinetd.service
[root@host-10-253-208-131 ~]# systemctl disable telnet.socket
Removed symlink /etc/systemd/system/sockets.target.wants/telnet.socket.
[root@host-10-253-208-131 ~]# systemctl stop telnet.socket
[root@host-10-253-208-131 ~]#  netstat -lntp
<think>好的,我现在需要帮助用户了解如何在Ubuntu 22.04上升级SSH最新版本。首先,我需要确认用户的需求。用户提到的是升级SSH,但SSH通常指的是OpenSSH服务器客户端软件包。在Ubuntu中,软件包的更新通常通过APT包管理器进行,所以升级SSH应该涉及更新系统、安装最新版本的openssh-serveropenssh-client。 接下来,我需要回顾自己掌握的相关知识。根据用户提供的引用内容,特别是引用[2]引用[3],升级系统可能需要使用apt updateapt upgrade,以及处理可能的依赖问题。此外,引用[3]提到了使用do-release-upgrade命令进行系统升级,但用户的问题是关于SSH升级,而不是整个系统的升级。因此,需要区分清楚是否需要升级整个系统还是仅升级SSH软件包。 然后,我需要考虑Ubuntu 22.04的软件包管理策略。Ubuntu的LTS版本通常会冻结软件包的版本,除非启用某些特定的仓库,如backports。因此,默认情况下,直接运行apt upgrade可能不会将SSH升级最新版本,除非有新版本进入官方仓库的安全更新或backports。 接下来,我需要确定如何检查当前安装的SSH版本以及最新可用版本。用户可能需要先更新包列表,然后升级现有软件包。如果openssh-serveropenssh-client有更新版本,通过apt install可以升级。 另外,用户可能遇到的问题包括依赖关系、PPA仓库的添加,或者需要从源编译安装。但一般情况下,推荐使用官方仓库的版本以确保稳定性,尤其是对于生产环境。 然后,我需要参考用户提供的引用。引用[2]中提到了处理Python3符号链接的问题,这可能是因为系统升级过程中出现的依赖问题。但SSH升级可能不会直接涉及Python,不过如果在升级过程中出现类似问题,可能需要类似的解决步骤,比如修复损坏的符号链接。 最后,整理步骤:首先更新系统,然后升级openssh软件包,检查版本,如果有必要添加backports仓库,最后重启SSH服务。同时,确保在升级过程中处理好可能的配置更改依赖问题。 可能还需要提醒用户备份重要配置文件,如sshd_config,以免升级过程中被覆盖。另外,确认升级后的SSH服务是否正常运行,以及防火墙设置是否正确,如引用[1]提到的22/tcp端口是否开放。</think>### 如何升级Ubuntu 22.04上的SSH最新版本 #### 1. 更新系统软件包列表 首先确保系统软件包列表是最新的: ```bash sudo apt update ``` #### 2. 升级现有软件包(包括SSH) 通过以下命令升级所有已安装软件包,包括OpenSSH: ```bash sudo apt upgrade -y ``` 如果提示需要处理依赖关系或配置文件更新,根据提示选择保留当前配置或覆盖。 #### 3. 明确升级OpenSSH软件包 若需单独升级SSH服务端客户端: ```bash sudo apt install --only-upgrade openssh-server openssh-client ``` #### 4. 检查OpenSSH版本 验证升级后的版本: ```bash ssh -V ``` 输出示例:$OpenSSH_8.9p1 Ubuntu-3ubuntu0.7, OpenSSL 3.0.2 15 Mar 2022$ #### 5. 使用Backports仓库(可选) 若官方仓库未提供最新版本,可启用Ubuntu Backports: ```bash sudo apt install -t jammy-backports openssh-server openssh-client ``` #### 6. 重启SSH服务 应用配置变更: ```bash sudo systemctl restart sshd ``` #### 7. 验证端口开放状态 确保防火墙允许SSH端口(默认22/tcp): ```bash sudo ufw allow 22/tcp # 引用[1] sudo ufw reload ``` #### 注意事项 - 配置文件备份:升级前备份`/etc/ssh/sshd_config`,避免覆盖自定义配置 - 依赖问题处理:若遇到类似Python环境问题(如引用[2]中的符号链接错误),需修复系统依赖关系 - 完全系统升级:大规模版本升级建议使用`do-release-upgrade`(引用[3]),但仅适用于跨版本系统升级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值