在 anolis os 8.8 中升级 openssh 到 9.9p1

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

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

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

升级步骤:

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

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

# 配置&编译
autoreconf
./configure
# 在此步可以指定安装参数,如:./configure --prefix=/usr --bindir=/usr/bin --sysconfdir=/etc/ssh
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_9_9_P1

# 执行卸载
make uninstall

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

posted @   不是豆豆  阅读(393)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
历史上的今天:
2022-09-30 在 nginx 中配置 HSTS 并禁用 TLS 1.0、1.1
2022-09-30 在 asp.net core 中,更换使用 Newtonsoft.Json 并阻止驼峰化命名
友情链接:迷途


点击右上角即可分享
微信分享提示