ubuntu 20.04tls focal openssh 在线升级到9.6.p1

1.在线安装telnet-server服务

apt-get install openbsd-inetd telnetd telnet -y

一共安装了三个服务 openbsd-inetd ,telnetd, telnet ,其中openbsd-inetd,telnetd 是telnet 服务端,安装时确保防火墙的23端口已经打开,telnet是telnet的客户端服务.

2.如果ubuntu 没有安装gcc 编译器,需要安装gcc,因为后面的openssl和openssh 安装程序都是源文件,需要编译后再安装的.

使用如下命令检查是否安装了gcc 编译器:

gcc --version

结果:

如果没有上图的提示:

那么需要安装:

sudo apt install build-essential]

注意:保持网络畅通,可以使用ping www.baidu.com 先检查一下,如果不通的话,vim /etc/resolv.conf修改dns配置,在其中添加nameserver 8.8.8.8,或者vim /etc/netplan/00-installer-config.yaml,添加nameservers:addresses: [8.8.8.8,114.114.114.114]

上面两步做完了就可以使用另外一台服务器来telnet一下ubuntu这台服务器了,假设这台ubuntu的ip 是172.22.11.111

telnet  172.22.11.111 23 

得到结果:

说明ubuntu的telnet服务已经开启,这一步是为了防止后面的安装过程中如果出现ssh连接断开情况,我们已经把ssh服务清除掉了,所以再次使用ssh登录时,是无法登录的,所以需要telnet服务提前开启,如果出现ssh服务断开的情况,还是可以使用telnet服务继续安装.

开始正式安装

3.卸载原有openssh

sudo apt-get remove openssh-server openssh-client -y
sudo  apt-get remove openssl

4.安装 libpam0g-dev, libssl-dev

libpam0g-dev 依赖于libssl-dev

sudo apt-get update -y  
sudo apt-get install libpam0g-dev -y 

备注:备份 /etc/ssh、 /etc/init.d/ssh 这个很重要

sudo mv /etc/ssh /etc/ssh.bak
sudo mv /etc/init.d/ssh /etc/init.d/ssh.bak

5.安装zlib

cd /home/sys-software
sudo tar zxvf zlib-1.3.1.tar.gz  #解压
cd zlib-1.3.1/  #
sudo ./configure --shared  #
sudo make && make install

6.安装openssl

cd /home/sys-software
tar zxvf openssl-3.2.1.tar.gz
cd openssl-3.2.1/
./config --shared zlib #这一步时间很久,大概要20分钟

make && make install

mv /usr/bin/openssl /usr/bin/openssl.bak

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

mkdir -p /usr/local/openssl/lib64
ln -s /usr/local/lib64/libssl.so /usr/local/openssl/lib64/libssl.so

echo “/usr/local/openssl/lib64” > /etc/ld.so.conf.d/openssl.conf #这一步如果是在telnet中执行会跳出,我是直接手敲的,如果是在ssh连接中执行不会有问题

ln -s /usr/local/lib64/libssl.so.3  /usr/lib/libssl.so.3
ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib/libcrypto.so.3

openssl version

得到结果:

7.安装更新ssh

cd /home/sys-software
tar zxvf openssh-9.6p1.tar.gz
cd /home/sys-software/openssh-9.6p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-ssl-dir=/usr/include/openssl --with-privsep-path=/var/lib/ssh --with-ssl-dir=/home/sys-software/openssl-3.2.1 #这个路径就是上一步安装openssl的路径,不要搞错了哦
make && make install
ssh -V

得到结果:

8.启动ssh

cd /etc/ssh
mv sshd_config sshd_config.default
cp ../ssh.bak/sshd_config ./ #备份的配置文件还原回去
mv /etc/init.d/ssh.bak /etc/init.d/ssh #备份的配置文件还原回去
systemctl unmask ssh
systemctl restart sshd

9.重新使用ssh协议登录验证一下,成功了就可以使用关闭telnet

systemctl stop openbsd-inetd
systemctl status openbsd-inetd

几个遇到的问题:

1.使用systemctl status sshd查看,发现状态一直是starting 的,而不是running的,使用systemctl restart sshd 重启会一直卡着,是因为ssh服务启动完毕后,需通知Systemd,才能继续往下执行,返回信号。 systemctl restart sshd

Job for ssh.service failed because a timeout was exceeded. See “systemctl status ssh.service” and “journalctl -xe” for details.

可修改sh的systemctl文件/lib/systemd/system/ssh.service中Type一项: Type=notify改为Type=simple,这样systemctl不会等待ssh返回的信号,systemctl daemon-reload并重启sshd进程可以解决systemctl超时的问题

sed -i “s/Type=notify/Type=simple/” /lib/systemd/system/ssh.service

2.sftp协议无法使用,传不了文件

vim /etc/ssh/sshd_config
#Subsystem      sftp    /usr/local/openssh/libexec/sftp-server改成下面这句
Subsystem      sftp    internal-sftp
systemctl restart sshd #重启服务生效

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值