1. 下载依赖并上传服务器
本步骤旨在下载 SSH 升级所需的依赖包,并将其上传至服务器。通过yum命令,指定--downloadonly参数仅进行下载操作,--downloaddir参数设置下载路径为/ssh/install,执行以下命令:
yum install --downloadonly --downloaddir=/ssh/install gcc pam-devel libselinux-devel zlib-devel openssl-devel |
下载完成后,将获取到一系列.rpm格式的依赖包文件,如keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm、krb5-devel-1.15.1-54.el7_9.x86_64.rpm等。请将这些文件上传至服务器对应目录,为后续安装做准备。
2. 下载 SSH 并上传服务器
从 OpenSSL 官方指定地址获取 SSH 安装包,链接为:https://www.openssl.org/source/old/3.0/openssl-3.0.0.tar.gz 。下载完成后,将该安装包上传至服务器。
3. 安装依赖
进入存放下载好的.rpm依赖包的目录,使用rpm命令进行安装。-ivhU参数组合分别表示安装、显示详细信息、处理依赖关系并升级,--nodeps参数忽略依赖关系检查,--force参数强制安装。执行命令:
rpm -ivhU * --nodeps --force
需注意,忽略依赖关系检查可能存在风险,建议在确保系统环境适配的情况下使用。
4. 备份配置文件
为防止升级过程中出现问题导致配置丢失,对关键配置文件进行备份。执行以下命令:
cp /etc/ssh/sshd_config sshd_config.backup cp /etc/pam.d/sshd sshd.backup |
备份文件将保存在当前操作目录下,后续若有需要可恢复原配置。
5. 解压 SSH
使用tar命令解压上传至服务器的 SSH 安装包,xzvf参数分别表示解压、处理 gzip 压缩格式、显示详细信息、指定文件名。执行命令:
tar xzvf openssh.tar.gz |
解压完成后,进入解压生成的目录:
cd openssh-9.0p1 |
6. 编译配置
在openssh-9.0p1目录下,通过./configure命令进行编译配置。各参数含义如下:
- --prefix=/usr:指定安装路径为/usr。
- --sysconfdir=/etc/ssh:设置配置文件目录为/etc/ssh。
- --with-md5-passwords:启用 MD5 密码验证。
- --with-pam:启用 PAM 认证。
- --with-zlib:使用 zlib 库。
- --with-tcp-wrappers:启用 TCP Wrappers 访问控制。
- --with-ssldir=/usr/local/ssl:指定 SSL 目录。
- --without-hardening:不启用强化功能。
执行命令:
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssldir=/usr/local/ssl --without-hardening |
7. 编译安装
执行编译和安装操作,使用make命令进行编译,make install命令进行安装:
make && make install |
错误信息处理
错误信息描述
在编译安装过程中,可能出现以下错误信息:
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open. It is required that your private key are NOT accessible by others. This private key will be ignored. unable to load host key "/etc/ssh/ssh_host_ed25519_key": bad permissions unable to load host key: /etc/ssh/ssh_host_ed25519_key sshd: no hostkeys available -- exiting. make: [check-config] Error 1(ignored) |
该错误表明主机密钥文件权限设置不当,需调整权限。
修改权限
使用chmod命令修改相关主机密钥文件权限为600,确保只有文件所有者可读写,执行以下命令:
chmod 600 /etc/ssh/ssh_host_rsa_key chmod 600 /etc/ssh/ssh_host_ecdsa_key chmod 600 /etc/ssh/ssh_host_ed25519_key |
或使用一条命令同时修改多个文件权限:
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key |
验证
使用sshd -t命令验证配置文件语法是否正确,确保权限修改后配置无误。
复制配置文件
将指定目录下的sshd.init文件复制到/etc/init.d/目录,并赋予执行权限,命令如下:
cp -a contrib/redhat/sshd.init /etc/init.d/sshd chmod u+x /etc/init.d/sshd |
还原配置文件
将备份的配置文件还原,覆盖升级过程中修改的文件,执行以下命令:
mv ../sshd.backup /etc/pam.d/sshd mv ../sshd_config.backup /etc/ssh/sshd_config |
修改确认配置
使用文本编辑器(如vi)打开/etc/ssh/sshd_config文件,进行以下配置修改:
vi /etc/ssh/sshd_config |
将PasswordAuthentication设置为yes,允许密码认证;PermitRootLogin设置为yes,允许 root 用户登录;同时注释掉以下三行内容:
#GSSAPIAuthentication yes #GSSAPICleanupCredentials no #Userpam yes |
修改完成后保存文件。
加入开机启动
使用chkconfig命令将sshd服务添加到开机启动项,并设置为开机自动启动:
chkconfig --add sshd chkconfig sshd on |
8. 重启服务
使用systemctl命令重启sshd服务,使升级后的配置生效:
systemctl restart sshd |
查看版本
使用ssh -V命令查看当前 SSH 版本,确认升级是否成功。
启动状态问题处理
问题描述
在启动sshd服务时,可能出现类似以下情况:
[4ajr@105 ~]$ systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: activating (start) since Thu 2022-07-21 11:58:09 CST;1min 11s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 98422 (sshd) Tasks:8 Memory: 4.3M CGroup: /system.slice/sshd.service -98422 sshd: /usr/sbin/sshd -D [listener]0 of 10-100 startups -98621 sshd: 4ajr [priv] -98623 sshd:4ajr@pts/2 -98625 sshd: 4ajr [priv] -98627 sshd: 4ajr@pts/0 -98628 -bash -98647 -bash -98830 systemctl status sshd Jul 21 11:58:09 105 systemd[1]: starting OpenssH server daemon... Jul 21 11:58:09 105 sshd[98422]: server listening on 0.0.0.0 port 22. Jul 21 11:58:09 105 sshd[98422]: server listening on ::port 22. Jul 21 11:58:36 105 sshd[98621]: Accepted password for 4ajr from 172.30.216.215 port 43872 ssh2 Jul 21 11:58:36 105 sshd[98625]: Accepted password for 4air from 172.30.216.215 port 43874 ssh2 |
该问题是由于/usr/lib/systemd/system/sshd.service与systemd不兼容导致。
处理办法
执行以下操作解决问题:
- 将不兼容的服务文件移动到其他目录:
mv /usr/lib/systemd/system/sshd.service /home/aaa/ |
- 重新加载systemd守护进程:
systemctl daemon-reload |
- 使用sshd -t命令检查配置是否存在问题。
- 若配置无误,重启sshd服务:
systemctl restart sshd |
安全漏洞修补相关操作
禁用 scp 命令
在某些场景下,为修补安全漏洞,可禁用scp命令(此操作不影响ssh正常使用)。通过将/usr/bin/scp文件重命名为/usr/bin/scp.bak实现禁用,执行命令:
mv /usr/bin/scp /usr/bin/scp.bak |
上述操作完成后,SSH 升级及相关安全配置调整工作基本结束。若在操作过程中遇到其他问题,可进一步排查系统日志或寻求专业技术支持。
这份优化后的指南更清晰全面。你可以说说对内容的看法,比如是否要增加特定系统下的注意事项,或补充更多操作细节。