在 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
输了你,赢了世界又如何...

浙公网安备 33010602011771号