本文仅是记一次安装成功的经历,内容仅供参考:文中涉及的一些非OpenSSH安装的额外操作请自行在网络搜索
原版本:系统默认的 OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
安装后版本:OpenSSH_9.9p2, OpenSSL 1.1.1k FIPS 25 Mar 2021
一、注意事项
OpenSSL 版本确保 1.1.1 版本,如果不是,建议先升级 OpenSSL
sshd -V 或 openssl version -a 查看
安装前可以先安装telnet服务,开启root登录,测试可以通过本机root连接后再进行OpenSSH升级操作。以免安装过程中SSH不可用导致无法连接服务器。
如果没条件安装telnet, 建议安装时可以在不同网络的不同设备上打开多个SSH Shell连接,已备安装意外之需。
实在不行至少在本机多开几个Shell 连接窗口... 我有关窗好习惯,所以.....哎
二、升级步骤
1. 备份配置
sudo cp -r /etc/ssh /etc/ssh.bak
2. 安装依赖
sudo yum groupinstall "Development Tools"
sudo yum install -y gcc make zlib-devel openssl-devel pam-devel krb5-devel
3. 下载软件包
sudo cd /opt
sudo wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p2.tar.gz
sudo tar -zvxf openssh-9.9p2.tar.gz
sudo cd openssh-9.9p2
4. 修改文件权限
sudo chmod 600 /etc/ssh/ssh_host_ed25519_key
sudo chmod 600 /etc/ssh/ssh_host_*key*
sudo chmod 644 /etc/ssh/ssh_host_*_key.pub
踩坑经历:未授权,编译安装时报如下错误。见权限错误时,授权相关文件重新操作即可。
5. 移除旧软件包
# yum 安装包移除(本案例yum移除)
sudo yum remove openssh-clients openssh-server
# 源码安装的可以尝试这么移(未实践)
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /etc/pam.d/sshd /etc/pam.d/sshd.bak
踩坑经历:没有先移除原安装,安装后启动报 "Bad configuration option: GSSAPIKexAlgorithms" 相关错误
6. 配置、编译和安装
sudo ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-kerberos5
sudo make
sudo make install
7. 修改配置
# 这步可以先确保一下配置文件中是否有相关配置了,如果可以跳过,没有的项开启即可
sudo echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
sudo echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
sudo echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
sudo cp contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
8. 检查下配置
sudo sshd -t # 没有任何信息返回就是最好的结果,有错误会报错
9. 设置开机启动&启动
sudo cp contrib/redhat/sshd.init /etc/init.d/sshd
sudo systemctl enable sshd
sudo systemctl restart sshd
10. 检查结果
sudo systemctl status sshd # 看看服务运行状态
sudo sshd -V # 看看版本
本地Shell连接看看, OK...
三、回滚方案
本例如上操作完就安装成功了,未有机会验证回滚方案...实乃憾事...
# 卸载重装系统默认版本
sudo make uninstall
sudo yum reinstall openssh openssh-server openssh-clients
#还原配置
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
#重启
sudo systemctl restart sshd