清华大学开源软件镜像站下载地址:
https://mirrors.tuna.tsinghua.edu.cn/pub/OpenBSD/OpenSSH/portable/openssh-9.0p1.tar.gz
一、升级
0、安装Telnet
(1)为防止安装失败,无法用ssh做远程连接,因此先安装telnet
powershell
yum -y install telnet*
systemctl enable telnet.socket
systemctl start telnet.socket
powershell
注:安全文件关闭或者修改(否则root无法telnet登录)
firewall-cmd --zone=public --add-port=23/tcp --permanent
再重启防火墙
systemctl restart firewalld.service
看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
1、准备工作
查询SSH版本
powershell
ssh -V
进入/usr/local/目录
powershell
cd /usr/local/
mkdir openssh
cd openssh/
2、备份原SSH
powershell
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
mv /etc/ssh /etc/ssh.bak
``
3、 上传openssh-9.0p1.tar.gz到openssh目录下并解压
```powershell
tar -zxvf openssh-9.0p1.tar.gz
cd /home/user/openssh/openssh-9.0p1/
4、编译校验
powershell
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening`
执行完成如图
此处执行到最后经常会报错,如openssl-devel等各种rpm包没有安装,并且安装包之间都有相互依赖和冲突,依次安装即可,主要是检查rpm下列包是否安装
powershell
yum install keyutils-libs rpm-build -y
yum install krb5-devel
yum install libcom_err-devel.i686 -y
yum -y install libselinux-devel.i686
yum -y install pam-devel.x86_64
yum -y install openssl-devel.x86_64
yum -y install pkgconfig.i686
yum -y install vsftpd.x86_64
yum -y install zlib-devel.i686
5、编译安装
powershell
make && make install
编译成功如图
6、复制到全局使用
powershell
cp /usr/local/sbin/sshd /usr/sbin/
cp /usr/local/bin/ssh /usr/bin/
cp /usr/local/bin/ssh-keygen /usr/bin/
ln -s /usr/local/etc /etc/ssh
7、查看版本
8、修改配置信息并重启
powershell
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
9、复制启动文件
powershell
cp /home/user/openssh/openssh-9.0p1/contrib/redhat/sshd.init /etc/init.d/sshd
10、服务自启动
powershell
systemctl enable sshd
systemctl daemon-reload
service sshd restart
11、验证是否有效
不要关闭现在的会话框,如果有问题可能会连接不上服务器.新开一个会话框连接该账号密码看看能不能登录
二、问题
2.sshd服务重启报错
(1)报错
systemctl start sshd 会很快返回,但此时命令行一直等待状态,直到数分钟后出现提示: Job for sshd.service failed because a timeout was exceeded.
(2)问题分析
单元文件包含单元的指令和行为信息。在后台systemctl命令和单元文件一起工作。为了出色而正确的完成工作,系统管理员必须能够手工编辑单元文件。一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。
sshd单元文件位于/usr/lib/systemd/system/sshd.service 。
sshd.service 服务启动方式为notify,但sshd 启动时不会发送消息
(3)解决方法
服务启动方式修改为simple(默认方式)后即可正常启动sshd服务,并能够正常进行远程连接
重新加载服务并启动
三、总结
SSH常识:
SSH是安全的加密协议,用于远程连接Linux服务器;
SSH的默认端口是22,安全协议版本是SSH2;
SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器;
SSH客户端包含ssh连接命令和远程拷贝scp命令等。
openssh升级:
需要先开启trlnet 服务,预防升级失败连接不上服务器;
然后升级openssl地址,按照步骤设置路径地址;
最后升级完不要立马关闭会话框,要先验证,预防下次进来的时候进不来;
验证成功之后,需要关闭telnet服务,因为不安全