ubuntu20.04升级OpenSSH

业务需求,需要将服务器的OpenSSH版本从8.2升级到最新版本(9.9),由于apt能提供的最新版本就是8.2,所以需要采用源码安装的方式。

1. 准备环境

确保系统已更新:

sudo apt update && sudo apt upgrade

安装必要的依赖:

sudo apt install -y build-essential zlib1g-dev libssl-dev

2. 下载OpenSSH源码

从OpenSSH官方网站下载源码包:

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-<version>.tar.gz

(将替换为需要的版本号,例如9.9p1)。

3. 解压源码包

tar -xzf openssh-<version>.tar.gz
cd openssh-<version>

4. 配置和编译

配置编译环境:

./configure --prefix=/usr --sysconfdir=/etc/ssh

编译并安装:

make
sudo make install

5. 配置并启动服务

确保配置文件存在并有效:

sudo cp sshd_config /etc/ssh/sshd_config

启动服务:

sudo systemctl restart ssh

6. 验证安装

检查版本号:

ssh -V
OpenSSH_9.9p1, OpenSSL 1.1.1f  31 Mar 2020

版本是升上去了,但是发现SSH客户端和SFTP无法登陆了。
各种找原因。

首先,OpenSSH 配置问题,在/etc/ssh/sshd_config中,按照以下配置修改:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no  # 可根据需求启用或禁用

如果是因为加密算法不兼容的话,再添加上:

KexAlgorithms +diffie-hellman-group1-sha1
HostKeyAlgorithms +ssh-rsa

修改后重启服务:

sudo systemctl restart ssh

按照上面修改完之后,发现还是无法登陆,于是去查看日志:

sudo tail -f /var/log/auth.log
终于被我逮住了,

日志显示:

User 《用户名》 not allowed because account is locked
表明用户 《用户名》 的账户在系统中被锁定,导致无法通过 SSH 登录。这个问题通常与系统账户状态或权限相关。
原因分析:

账户被锁定可能由以下原因引起:

1、用户密码被禁用:

通过 passwd -S 用户名 检查用户状态,如果显示 L 或 LK,表示账户被锁定。

2、/etc/shadow 文件中用户标记为锁定:

用户的加密密码字段前有 ! 或 * 标记,表示账户被锁定。

3、PAM 配置或策略限制:

可能由于安全策略导致自动锁定。

4、系统更新或误操作:

升级软件包或修改系统配置时,意外锁定了用户。

解决办法:

1、检查 /etc/shadow

查看并编辑 /etc/shadow 文件:

sudo nano /etc/shadow

找到 ubuntu 的记录,确保密码字段不以 ! 或 * 开头。正常格式示例:

ubuntu:$6$encryptedpassword:...

如果以 ! 开头,例如 ubuntu:!$6$encryptedpassword:...,则移除 !。

保存文件后,重启 SSH 服务:

sudo systemctl restart sshd

最后,成功登陆服务器。

### 升级 OpenSSH 至 9.9p1 版本 为了在 Ubuntu 20.04 上成功升级OpenSSH 9.9p1 版本,需遵循一系列特定的操作流程以确保系统的稳定性和安全性。 #### 准备工作 安装编译所需的各种依赖包对于顺利构建 OpenSSH 是必不可少的。执行如下命令可以完成这些依赖项的安装: ```bash sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential zlib1g-dev libssl-dev ``` 上述命令更新了软件列表并提升了现有软件到最新版本,同时也安装了用于编译 OpenSSH 所必需的一些开发工具和库文件[^3]。 #### 获取与配置源码 下载指定版本 (9.9p1) 的 OpenSSH 源代码压缩包,并将其放置在一个合适的工作目录内。接着解压该档案: ```bash wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz tar -zvxf openssh-9.9p1.tar.gz cd openssh-9.9p1/ ``` 通过 `./configure` 命令来准备编译环境,这一步骤会检测系统上的各种设置以便于后续编译过程能够正常运行。之后利用 `make` 和 `make install` 来实际编译并安装新版本的 SSH 服务程序[^1]。 #### 备份原有配置 为了避免覆盖现有的重要配置,在继续之前应当备份 `/etc/ssh/sshd_config` 文件以及 PAM 认证模块的相关设定: ```bash mv /etc/ssh/sshd_config /etc/ssh/sshd_config_bak mv /etc/pam.d/sshd /etc/pam.d/sshd_bak ``` #### 编译与安装 一旦准备工作就绪,则可以在终端中依次输入以下指令来进行最终的编译和安装动作: ```bash ./configure make sudo make install ``` 此过程中可能会提示用户确认某些选项,默认情况下保持不变通常即可满足大多数需求[^2]。 #### 还原配置文件及重启服务 重新命名先前创建的备份文件回到原来的位置,从而恢复原有的 SSH 设置;随后刷新守护进程缓存并重启 SSHD 服务使更改生效: ```bash mv /etc/ssh/sshd_config_bak /etc/ssh/sshd_config mv /etc/pam.d/sshd_bak /etc/pam.d/sshd sudo systemctl daemon-reload sudo systemctl restart sshd ``` 最后验证新的 SSH 客户端和服务端是否已经正确安装到位: ```bash /usr/local/bin/ssh -V ``` 如果一切顺利的话,现在应该可以看到最新的 OpenSSH 9.9p1 已经被成功部署到了服务器之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值