当前位置: 首页 > news >正文

Linux更新操作系统Openssh版本9.3p1(源码编译安装)

Linux更新操作系统Openssh版本9.3p1(源码编译安装)

部署前准备

  • 安装依赖
    • yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
    • yum install -y pam* zlib*
  • openssh-9.3p1.tar.gz
  • openssl-3.1.0.tar.gz
  • 备份文件
    • cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

升级Openssl

解压安装包

  • tar zxvf openssl-3.1.0.tar.gz
  • cd openssl-3.1.0

备份旧Openssl

  • mv /usr/bin/openssl /usr/bin/openssl_old
  • mv /usr/include/openssl /usr/include/openssl_old

编译安装Openssl

  • ./config --prefix=/usr/local/openssl && make && make install

创建操作系统软链接

  • ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  • ln -s /usr/local/openssl/include/openssl /usr/include/openssl

设置加载库

  • 注意:lib库名称,旧版本是’lib’,新版本编译后是’lib64’,故 编译完成后检查自己安装的路径lib库名称
  • echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
  • ldconfig -v

检查Openssl版本

  • openssl version

升级Openssh

解压openssh安装包

  • tar zxvf openssh-9.3p1.tar.gz
  • cd openssh-9.3p1/

备份旧openssl目录

  • mv /etc/ssh /etc/ssh_old

编译安装Openssh

  • ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/lib64 --without-hardening
  • make && make install

备份旧文件

  • mv /usr/sbin/sshd /usr/sbin/sshd_old
  • mv /etc/sysconfig/sshd /etc/sysconfig/sshd_old
  • mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_old

卸载openssh

  • for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps ;done

还原openssh配置文件

  • cp -a /etc/ssh_old/sshd_config /etc/ssh/sshd_config
  • mv /etc/ssh/moduli.rpmsave /etc/ssh/moduli
  • mv /etc/pam.d/sshd.bak /etc/pam.d/sshd

替换新版本openssh相关命令

  • cp -arf /usr/local/openssh/bin/* /usr/bin/
  • cp -arf /usr/local/openssh/sbin/sshd /usr/sbin/sshd

拷贝启动脚本

  • cp -a contrib/redhat/sshd.init /etc/init.d/sshd
  • cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
  • chmod +x /etc/init.d/sshd
# 此处如果是SUSE操作系统,对应的目录是contrib/susu/
cp -a contrib/suse/rc.sshd /etc/init.d/sshd
cp -a contrib/suse/sysconfig.ssh /etc/sysconfig/ssh

设置开机启动,并验证版本

  • systemctl daemon-reload
  • chkconfig --add sshd && chkconfig sshd on
  • systemctl start sshd
  • ssh -V

设置安全性

  • sed -ie ''$(grep -rn 'Ciphers and keying' /etc/ssh/sshd_config | cut -d ':' -f1)'a Ciphers aes128-ctr,aes192-ctr,aes256-ctr \n\nMACs hmac-sha2-256,hmac-sha2-512,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com \n\nKexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 \n' /etc/ssh/sshd_config

检查配置并注释不支持的参数

  • sshd -t

踩坑

  • /etc/pam.d/sshd配置内容
#%PAM-1.0
auth       substack     password-auth
auth       include      postlogin
account    required     pam_sepermit.so
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    optional     pam_motd.so
session    include      password-auth
session    include      postlogin
  • ssh远程其他机器报错
mv /etc/ssh/ssh_config /etc/ssh/ssh_config_new
mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config
systemctl restart sshd
  • Anolis操作系统
    • 需要单独安装pcre和perl
http://www.lryc.cn/news/68503.html

相关文章:

  • MS COCO数据集介绍
  • Java之线程池
  • 让你的网站变得更智能 - B2 Pro主题问答模块新增OpenAI ChatGPT机器人自动回答功能
  • 仓库信息管理系统设计与实现
  • 初识Java多线程编程
  • 最新入河排污口设置论证、水质影响预测与模拟、污水处理工艺分析及典型建设项目入河排污口方案报告书实例分析
  • awk指令的详细指南
  • 解密Netty中的Reactor模式
  • 这是一个黑科技:C++爬虫~(文末报名C/C++领域新星计划)
  • 2023 年第八届数维杯数学建模挑战赛 赛题浅析
  • Spring Boot单元测试
  • 实景三维浪潮翻涌,新技术“席卷”石家庄!
  • 【Python】使用小脚本
  • 技术日志2023-5-18
  • JUC之锁
  • C++中的 cout 和 printf 用法
  • Maven基础使用
  • 【C++ 入坑指南】(06)运算符
  • 了解一下js中的函数式编程
  • 动态HTTP代理在linux里的使用
  • 软考证书值得考吗?怎么考?
  • 超级秘密文件夹忘记密码的解决办法
  • 脑的物理系统
  • 1054. 距离相等的条形码(leetcode,堆问题,priority_queue)-------------------c++实现
  • QT开发实战-动态壁纸软件
  • Netty核心组件模块(一)
  • Robot Framework+Jenkins持续集成UI自动化项目
  • 【ROS】ROS1编程速览
  • 探索智能化:TOOM解析未来稿件校验系统的技术进展与应用展望
  • Java程序员从青铜到王者,不同段位的薪资和技能变化