离线升级 openssh openssl 离线安装

准备

查看 ssh 版本

ssh -V

openssh 下载

Index of /pub/OpenBSD/OpenSSH/portable/

下载所需要的版本
本例:openssh-9.3p2.tar.gz

查看 openssl 版本

openssl version

openssl 下载

https://www.openssl.org/source/

下载所需要的版本
本例: openssl-1.1.1w.tar.gz

准备安装及备份

安装 openssl

将 openssl 上传并解压

tar -zxvf openssl-1.1.1w.tar.gz

备份原来的 openssl

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

注意这里需要使用 root 账户 或者命令前加上 sudo ,否则可能出现没有权限的情况;
有时候可能会出现服务器没有移动权限,则使用 cp 命令,再删除

mkdir -p /usrbak/bin/
cp /usr/bin/openssl /usrbak/bin/openssl.bak
mkdir -p /usrbak/include/
cp /usr/include/openssl /usrbak/include/openssl.bak
rm -rf /usr/bin/openssl
rm -rf /usr/include/openssl

安装 openssl

cd /root/openssl-1.1.1w
./config
make -j 4 && make install

如果 make 出现了问题,就先执行 make clean 后再重新执行 make

./config 后示例

file

make -j 4 && make install 后示例

file

重建 openssl软连接

ln -s  /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s  /usr/local/ssl/include/openssl /usr/include/openssl
ln -s  /usr/local/lib64/libssl.so.1.1  /usr/lib64/libssl.so.1.1
ln -s  /usr/local/lib64/libcrypto.so.1.1  /usr/lib64/libcrypto.so.1.1

# 检查openssl-1.1.1w所需要的函数库
ldd /usr/local/bin/openssl
# 添加openssl-1.1.1w的库文件路径到ld.so.conf
echo "/usr/local/lib64" >> /etc/ld.so.conf
# 更新系统函数库
ldconfig -v
# 绝对路径查看openssl版本
ldd /usr/local/bin/openssl

如果提示已经存在,则可以删除重建

file

file

查看 openssl 升级结果

openssl version

OpenSSL 1.1.1w  11 Sep 2023

其他目录安装

安装默认目录为:/usr/local/ssl
root 账户没有 usr 的部分操作权限,所以切换目录指定 /root/openssl 安装


cd /root/openssl-1.1.1w
./config --prefix=/root/openssl
make -j 4 && make install

ln -s  /root/openssl/bin/openssl /usr/bin/openssl
ln -s  /root/openssl/include/openssl /usr/include/openssl
ln -s  /root/openssl/lib/libssl.so.1.1  /usr/lib64/libssl.so.1.1
ln -s  /root/openssl/lib/libcrypto.so.1.1  /usr/lib64/libcrypto.so.1.1

# 检查openssl-1.1.1w所需要的函数库
ldd /root/openssl/bin/openssl
# 添加openssl-1.1.1w的库文件路径到ld.so.conf
echo "/root/openssl/lib" >> /etc/ld.so.conf
# 更新系统函数库
ldconfig -v
# 绝对路径查看openssl版本
ldd /root/openssl/bin/openssl

vim /etc/profile
export PATH=/root/openssl/bin:$PATH
source /etc/profile

出现 openssl command not found 错误

出现

openssl version
-bash: /usr/bin/openssl: 没有那个文件或目录
或者
-bash: command not found

配置 path

#通过修改profile文件:
vim /etc/profile
/export PATH //找到设置PATH的行,添加
export PATH=/usr/local/openssl/bin:$PATH

立即生效:

source /etc/profile

安装 openssh

将 openssh 上传并解压

tar -zxvf openssh-9.3p2.tar.gz

备份原来的 openssh

通过 whereis ssh 找到 openssh 的文件

备份ssh和sshd文件或目录

mv /etc/ssh /etc/ssh_old.bak
mv /usr/bin/ssh /usr/bin/ssh_old.bak
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen_old.bak
mv /usr/sbin/sshd /usr/sbin/sshd_old.bak
mv /etc/pam.d/sshd.pam /etc/pam.d/sshd.pam_old.bak

注意这里需要使用 root 账户 或者命令前加上 sudo ,否则可能出现没有权限的情况;
有时候可能会出现服务器没有移动权限,则仿照上方使用 cp 命令,再删除

cp /etc/ssh /etcbak/ssh_old.bak
cp /usr/bin/ssh /usrbak/bin/ssh_old.bak
cp /usr/bin/ssh-keygen /usrbak/bin/ssh-keygen_old.bak
cp /usr/sbin/sshd /usrbak/sbin/sshd_old.bak
cp /etc/pam.d/sshd.pam /etcbak/pam.d/sshd.pam_old.bak
rm -rf /etc/ssh
rm -rf /usr/bin/ssh
rm -rf /usr/bin/ssh-keygen
rm -rf /usr/sbin/sshd
rm -rf /etc/pam.d/sshd.pam

卸载原有的 openssh 包

rpm -e --nodeps `rpm -qa | grep openssh`

初始化 openssh

cd /root/openssh-9.3p2
 ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/ssl --with-zlib

如果上面的 configure 不生效,使用下面的
CCFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib64" ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/ssl --with-zlib

file

如果提示:configure: error: zlib.h missing - please install first or check config.log
则需要先安装 zlib
官网:https://www.zlib.net/
下方有安装教程

如果提示:configure: error: PAM headers not found
则需要安装 pam
https://github.com/linux-pam/linux-pam

编译安装 openssh

make -j 4 && make install

file

如果 make 出现了问题,就先执行 make clean 后再重新执行 make

这里如果make install报
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
sshd: no hostkeys available -- exiting.
make: [check-config] Error 1 (ignored)
的错误,执行以下命令:
chmod 600 /etc/ssh/*
然后再次执行 make install

复制启动 sshd 脚本

# 从源码目录下复制sshd.init到/etc/init.d/
cp  /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp  /usr/local/openssh/bin/ssh /usr/bin/ssh
cp  /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp  /root/openssh-9.3p2/contrib/redhat/sshd.init /etc/init.d/sshd

修改配置文件(sshd_config)

文件增加权限
chmod +x /etc/init.d/sshd

# 开启允许X11转发
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
# 允许root用户通过SSH登录到系统
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# 开启允许密码验证
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
# 启用公钥身份验证
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
sed -i -e "s/UsePAM yes/UsePAM no/g" /etc/ssh/sshd_config

也可以手动修改

vim /etc/ssh/sshd_config

重新生成 key

rm -f /etc/ssh/sshhost*
ssh-keygen -A

启动openssh,并设置开机启动

chkconfig --add sshd
systemctl enable sshd
systemctl start sshd
systemctl restart sshd

使用 systemctl status sshd.service 查看启动状态
如果提示启动失败,或重启失败,或者被占用,则 reboot 重启服务器

file

查看版本

ssh -V
sshd -V

OpenSSH_9.3p2, OpenSSL 1.1.1k  25 Mar 2021

如果服务器没有复制和移动权限,则使用创建软连接的方式

ln -s  /usr/local/openssh/sbin/sshd /usr/sbin/sshd
ln -s  /usr/local/openssh/bin/ssh /usr/bin/ssh
ln -s  /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s  /root/openssh-9.3p2/contrib/redhat/sshd.init /etc/init.d/sshd

增加权限

chmod +x /etc/init.d/sshd

安装 zlib

如果提示:
checking for zlib.h... no
configure: error: zlib.h missing - please install first or check config.log

则需要安装 zlib
https://www.zlib.net/

#解压
tar -zxvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
#配置
./configure
#编译
make && make install

安装 PAM

如果提示:configure: error: PAM headers not found
则需要安装 pam
https://github.com/linux-pam/linux-pam

tar -xf Linux-PAM-1.5.2.tar.xz
cd Linux-PAM-1.5.2
./configure
make && make install

如果再开启 sshd 时报错

sshd re-exec requires execution with an absolute path

用绝对路径启动,也报错如下:

Could not load host key: /etc/ssh/ssh_host_key
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
Disabling protocol version 1. Could not load host key
Disabling protocol version 2. Could not load host key
sshd: no hostkeys available — exiting

需要执行以下命令生成 key

ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
/usr/sbin/sshd

如果 ssh 和 sshd 版本不一致 ,还是老版本

确认所有的 SSH 版本

whereis ssh
whereis sshd

查看不同版本的详细信息

/path/to/ssh -V
/path/to/sshd -V

确定默认 SSH 服务 (可能没有)
查看默认的 SSH 服务是否是预期的版本。可以通过查看 /etc/ssh/sshd_config 文件中的 #DefaultPath 行来确定默认的 SSH 服务路径。

检查环境变量

echo $PATH

如果发现旧版本的 SSH 路径,可以修改 ~/.bashrc 或 /etc/profile 文件,调整 PATH 环境变量

vi /etc/profile
source /etc/profile

相关文章

转载请注明: 转载自 浮生一程
本文链接地址 离线升级 openssh openssl 离线安装
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇