在 anolis os 8.10 中升级 openssh 到 10.0p2

标题中版本号是实际测试通过的,理论上应该也适用于类似系统和相近版本

openssh 貌似有不带 p 和带 p 的两个版本,具体区别没有细研究

就网上文章来看,似乎带 p 的版本更容易升级

升级步骤:

1、首先安装一套 telnet 用于备份

# 安装 telnet 相关
yum -y install telnet telnet-server

# 启动服务
systemctl start telnet.socket
systemctl enable telnet.socket

# 添加防火墙例外
firewall-cmd --permanent --add-port=23/tcp

# 重启防火墙生效
firewall-cmd --reload

# 重启并尝试使用 telnet 是否生效
reboot

# 测试连接(请修改 127.0.0.1 为目标服务器 IP,如遇中文乱码,可尝试使用 putty 等工具)
telnet 127.0.0.1

2、使用 telnet 连入系统,卸载 ssh 然后再安装

下载地址:https://github.com/openssh/openssh-portable/tags

# 安装编译环境
yum install -y make autoconf automake libtool zlib-devel openssl-devel

# 如果没有 unzip 命令的话
yum install -y zip

# 检查 openssl 版本(需要大于或等于 1.1.1 版本)
openssl version
# 如果 OpenSSL 版本低于 1.1.1,会报错:checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have "100020bf (OpenSSL 1.0.2k-fips  26 Jan 2017)")
# 安装一个独立的 1.1.1 版本
yum install openssl11 openssl11-devel -y

# 解压离线包
unzip openssh-portable-V_10_0_P2.zip
cd openssh-portable-V_10_0_P2

# 配置&编译
autoreconf

./configure
# 在此步可以指定安装参数,如:
./configure --prefix=/usr --bindir=/usr/bin --sysconfdir=/etc/ssh
# 如果安装了独立的 1.1.1 版本,请执行以下语句:
./configure CFLAGS="-std=gnu99 -I/usr/include/openssl11" LDFLAGS="-L/usr/lib64/openssl11/"

make

# 以上步骤都没问题的话,卸载系统原有 ssh
yum remove openssh-server

# 安装新的 ssh
make install

# 修改默认配置文件(在安装完成的最后一句输出,会提示有配置文件的路径,如:/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config)
vi /usr/local/etc/sshd_config

# 确保配置文件中有以下内容且未注释
# 启用密码认证
PasswordAuthentication yes
# 启用 root 登录
PermitRootLogin yes
# 参考命令修改:检查配置,没有时在最后添加两行
grep -qxF 'PasswordAuthentication yes' /usr/local/etc/sshd_config || echo 'PasswordAuthentication yes' | sudo tee -a /usr/local/etc/sshd_config
grep -qxF 'PermitRootLogin yes' /usr/local/etc/sshd_config || echo 'PermitRootLogin yes' | sudo tee -a /usr/local/etc/sshd_config

# 如修改了默认安装路径,请注意修改该文件中默认的 sftp-server 路径
# 以下为默认配置
Subsystem       sftp    /usr/local/libexec/sftp-server
# 如修改参数 --prefix=/usr 此处应改为
Subsystem       sftp    /usr/libexec/sftp-server

# 配置文件修改完成后,可以通过以下命令检查是否有问题:
/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config

# 生成自启文件
vi /etc/systemd/system/sshd.service

# 添加以下内容
[Unit]
Description=OpenSSH server daemon
After=network.target

[Service]
ExecStart=/usr/local/sbin/sshd
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 配置启动
sudo systemctl enable sshd
sudo systemctl start sshd

# 检查状态
sudo systemctl status sshd

# 如遇服务启动失败,检查是否有未结束的 ssh 进程
sudo netstat -tulnp | grep 22

# 结束进程(修改 888 为进程 pid)
kill 888

# 再次重启
sudo systemctl restart sshd

# 重启生效
reboot

3、检查结果

# 系统内检查版本
ssh -V

# 安装 nmap 工具
yum -y install nmap

# 从外部检查版本(注意替换 127.0.0.1 为实际 ip 地址)
nmap -sV -p 22 127.0.0.1

# 一切正常后,删除 telnet 服务
yum remove -y telnet-server

如果遇到内外检查版本不一致的情况,大概就是覆盖安装没有成功,系统默认启动的还是内置的 ssh 版本,请尝试全新安装

4、如果装错了准备卸载

# 切回安装目录
cd openssh-portable-V_10_0_P2

# 执行卸载
make uninstall

参考自:https://www.jianshu.com/p/a9b9f950cf54

https://www.cnblogs.com/klvchen/p/18283103

posted @ 2024-09-30 15:16  不是豆豆  阅读(1455)  评论(0)    收藏  举报
友情链接:迷途