centos下OpenSSH升级 目录1. 升级理由2. 环境准备2.1 安装telnet2.2 升级openSSL3. 升级openSSH1. 升级理由扫描到如下漏洞↓升级可以解决绝大多数漏洞现在我们得升到最新的9.82. 环境准备2.1 安装telnet如果我们在安装OPENSSH途中突然断网断电导致无法通过ssh连接是件很可怕的事情。所以我们有必要先留条后路也就是安装telnet服务端。# 先检查telnet和xinetd是否已经安装rpm-qa|greptelnetrpm-qa|grepxinetd然后安装启动↓yum-yinstallxinetd telnet-server systemctlenabletelnet.socket systemctl start telnet.socket systemctl start xinetd systemctl status telnet.socket记得要开放默认的23端口号。如果启动遇到问题不妨试试vim /etc/xinetd.d/telnet来编辑配置文件↓servicetelnet{disableno socket_typestreamwaitno userroot server/usr/sbin/in.telnetd log_on_failureUSERID log_on_successUSERID}利用vim /etc/pam.d/remote更改远程访问配置文件将 auth required pam_securetty.so这行加上#号注释掉。remote文件释义#%PAM-1.0# PAM 配置文件的版本标识#auth required pam_securetty.so# 确保只有在安全终端上才能以 root 身份登录注释掉表示不使用此模块auth substack password-auth# 使用 password-auth 模块栈来处理身份验证auth include postlogin# 包含 postlogin 配置处理登录后的身份验证account required pam_nologin.so# 检查是否允许非 root 用户登录如果 /etc/nologin 文件存在则禁止登录account include password-auth# 包含 password-auth 配置处理账户状态检查password include password-auth# 包含 password-auth 配置处理密码更改的规则# pam_selinux.so close should be the first session rule# pam_selinux.so 关闭时必须是第一个会话规则session required pam_selinux.so close# 关闭 SELinux 上下文确保会话结束时正确处理 SELinuxsession required pam_loginuid.so# 设置登录用户的 UID以便在会话期间进行跟踪# pam_selinux.so open should only be followed by sessions to be executed in the user context# pam_selinux.so 打开时只能跟随用户上下文中的会话session required pam_selinux.soopen# 打开 SELinux 上下文确保会话开始时正确设置 SELinuxsession required pam_namespace.so# 使用命名空间功能为用户创建独立的环境增强安全性session optional pam_keyinit.so force revoke# 初始化密钥环强制撤销所有旧的密钥session include password-auth# 包含 password-auth 配置处理会话的设置session include postlogin# 包含 postlogin 配置处理登录后的会话设置试用telnet连接↓2.2 升级openSSL下载地址https://openssl-library.org/source/将下载的包传到/home/ssh文件目录下解压并安装↓tar-zxvfopenssl-3.3.2.tar.gzcdopenssl-3.3.2/ ./config sharedmakemakeinstall安装失败提示Cant locate IPC/Cmd.pm in INC (INC contains: /home/ssh/openssl-3.3.2/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /home/ssh/openssl-3.3.2/external/perl/Text-Template-1.56/lib) at /home/ssh/openssl-3.3.2/util/perl/OpenSSL/config.pm line 19. BEGIN failed--compilation aborted at /home/ssh/openssl-3.3.2/util/perl/OpenSSL/config.pm line 19. Compilation failed in require at /home/ssh/openssl-3.3.2/Configure line 23. BEGIN failed--compilation aborted at /home/ssh/openssl-3.3.2/Configure line 23.↓出现上述问题是缺失Perl模块安装缺失模块后再次安装↓yuminstallperl-CPAN cpan IPC::Cmd cpan List::Util ./config sharedmakemakeinstall#echo $? 检查是否安装成功 0表示成功echo$?执行备份、添加软链接↓ll /usr/bin/opensslmv/usr/bin/openssl /usr/bin/openssl_bakln-s/usr/local/bin/openssl /usr/bin/openssl ll /usr/bin/openssl将库路径添加到配置文件↓echo/usr/local/lib64/etc/ld.so.conf ldconfig openssl version检查版本3. 升级openSSH下载地址https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/目前最新版本9.9了我还是下载9.8↓传输到目标↓解压↓tar-zxvfopenssh-9.8p1.tar.gzcd/home/ssh/openssh-9.8p1安装↓./configure--prefix/usr/--sysconfdir/etc/ssh --with-openssl-includes/usr/local/include/openssl --with-ssl-dir/usr/local/lib64 --with-zlib --with-md5-passwords --with-pammakemakeinstall编译安装时注意–with-ssl-dir参数这里应该是库文件路径默认库文件路径是/usr/local/lib64填写默认安装路径/usr/local/ssl是不对的会报错无法找到库文件。如果遇到configure: error: PAM headers not found错误请安装PAM 开发包↓。无此问题忽略#安装PAM后再执行openSSH安装yuminstallpam-devel安装完成后如果有提示/etc/ssh/ssh_host_rsa_key等文件无权限得执行授权↓chmod600/etc/ssh/ssh_host_rsa_keychmod600/etc/ssh/ssh_host_ecdsa_keychmod600/etc/ssh/ssh_host_ed25519_key没提示也可以查看下权限↓stat-c%a %n/etc/ssh/ssh_host_rsa_keystat-c%a %n/etc/ssh/ssh_host_ecdsa_keystat-c%a %n/etc/ssh/ssh_host_ed25519_key编辑sshd配置文件vim /etc/ssh/sshd_config将PermitRootLogin前的注释去掉也可以根据自身需要去掉PubkeyAuthentication的注释↓编辑好后查看版本并重新启动ssh-Vsystemctlenablesshd systemctl status sshd systemctl restart sshd systemctl status sshd