欢迎光临
我们一直在努力

银河麒麟v10 arm64架构制作openssh 10.3p1 rpm包——筑梦之路

之前使用openssh官方源码+修改spec文件来制作rpm二进制包,此次利用开源项目来制作。

https://github.com/boypt/openssh-rpms.git

这里主要记录关键步骤。

环境说明

cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"

cat /etc/.productinfo
Kylin Linux Advanced Server
release V10 SP3 2403/(Halberd)-aarch64-Build20.01/20240426

准备工作

1. 下载源码包

ls -lh downloads/
总用量 55M
-rw-r–r– 1 root root 2.0M 4月 2 16:18 openssh-10.3p1.tar.gz
-rw-r–r– 1 root root 53M 4月 26 21:13 openssl-4.0.0.tar.gz
-rw-rw-r– 1 root root 29K 4月 10 12:00 x11-ssh-askpass-1.2.4.1.tar.gz

./pullsrc.sh

2. 安装依赖包

yum install -y autoconf automake gcc make rpm-build pam-devel krb5-devel zlib-devel libXt-devel libX11-devel gtk2-devel perl perl-IPC-Cmd perl-Time-Piece systemd-devel

3. 修改脚本compile.sh

vim compile.sh

21行处改为 WITH_OPENSSL=1

编译rpm二进制包

./compile.sh

# 制作完成后的rpm包

ls -lh output/
总用量 2.1M
-rw-r–r– 1 root root 886K 4月 26 21:29 openssh-10.3p1-1.ky10.aarch64.rpm
-rw-r–r– 1 root root 636K 4月 26 21:29 openssh-clients-10.3p1-1.ky10.aarch64.rpm
-rw-r–r– 1 root root 617K 4月 26 21:29 openssh-server-10.3p1-1.ky10.aarch64.rpm

安装升级并验证

# 卸载会产生冲突的help包

rpm -e openssh-help –nodeps

# 升级安装openssh 10.3p1

yum localinstall *.rpm

# 修改配置文件,此处必须要修改配置文件,不然sshd服务无法启动

脚本内容附在下面

# 检查sshd配置是否正确

sshd -t
#!/bin/bash

# 定义配置文件路径,默认为 /etc/ssh/sshd_config
CONFIG_FILE="${1:-/etc/ssh/sshd_config}"

# 检查文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
echo "错误: 配置文件 $CONFIG_FILE 不存在。"
exit 1
fi

# 创建备份文件,添加时间戳以防覆盖
BACKUP_FILE="${CONFIG_FILE}.bak.$(date +%Y%m%d%H%M%S)"
cp -p "$CONFIG_FILE" "$BACKUP_FILE"
echo "已创建备份: $BACKUP_FILE"

# 定义需要注释掉的选项列表
OPTIONS=(
"GSSAPIAuthentication"
"GSSAPICleanupCredentials"
"RSAAuthentication"
"RhostsRSAAuthentication"
"GSSAPIKexAlgorithms"
)

MODIFIED=false

for opt in "${OPTIONS[@]}"; do
# 使用 sed 匹配行首可选空白 + 选项名 + 后续空白或行尾
# 如果该行没有被注释(即行首非#),则在其前面添加 #
# 注意:这里使用扩展正则表达式 (-E)

# 检查是否包含未注释的该选项
if grep -qE "^\\s*${opt}(\\s|$)" "$CONFIG_FILE"; then
echo "正在处理选项: $opt"
# 执行替换:匹配行首空白+选项名,替换为 #原内容
# 使用 | 作为分隔符避免与路径中的 / 冲突
#sed -i -E "s|^(\\s*)(${opt})(\\s|$)|#\\1\\2\\3|" "$CONFIG_FILE"
sed -i "s/^${opt}/#${opt}/" "$CONFIG_FILE"
MODIFIED=true
fi
done

if [ "$MODIFIED" = true ]; then
echo "配置修改完成。建议运行 'sshd -t' 检查配置语法。"
echo "如有问题,可恢复备份: cp $BACKUP_FILE $CONFIG_FILE"
else
echo "未发现需要修改的配置项,或所有相关项已被注释。"
fi
# 重启sshd服务并进行测试验证

systemctl restart sshd

systemctl status sshd

ssh -V

至此,完毕。

其他类似项目:https://github.com/boypt/openssh-deb.git

赞(0)
未经允许不得转载:171主机测评 » 银河麒麟v10 arm64架构制作openssh 10.3p1 rpm包——筑梦之路
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址