跳转到主要内容

openssh升级

openssl升级

  1. 首先,你需要下载 OpenSSL 的源代码,可以在 OpenSSL 的官方网站(https://www.openssl.org/source/)上找到。下载完成后,将源代码文件解压到一个目录中,例如 /usr/local/src
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz
  1. 进入解压后的目录,编译和安装 OpenSSL。
cd openssl-1.1.1g
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
make test
make install

这些命令会将 OpenSSL 安装到 /usr/local/openssl 目录中。

  1. 最后,你需要设置环境变量,以便系统能够找到新安装的 OpenSSL。
echo 'export PATH=/usr/local/openssl/bin:$PATH' >> /etc/profile
echo 'export LD_LIBRARY_PATH=/usr/local/openssl/lib' >> /etc/profile
source /etc/profile

现在,你应该能够使用 openssl version 命令来检查新安装的 OpenSSL 的版本了。

注:常见的报错处理 openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory

export LD_LIBRARY_PATH="/usr/local/openssl/lib64:$LD_LIBRARY_PATH"

注2:安装前记得先备份原文件

openssh编译安装

  1. 首先,从OpenSSH的官方网站(https://www.openssh.com/)下载最新版本的源代码包。解压源代码包。在命令行中,使用以下命令将源代码包解压到您选择的目录中:
tar -xf openssh-X.X.tar.gz

(将"openssh-X.X.tar.gz"替换为您下载的源代码包的实际文件名)

  1. 进入解压后的目录,编译和安装 Openssh
cd openssh-X.X
./configure --prefix=/usr/local/openssh
make
sudo make install
  1. 完成安装后,编辑SSH配置文件(通常位于/etc/ssh/sshd_config)以进行必要的更改。例如,您可以配置端口号、允许的用户等等。保存并关闭文件。

  2. 重新启动SSH服务以使更改生效。在命令行中,运行以下命令:

sudo systemctl restart sshd
  1. 最后,验证OpenSSH是否已成功安装。在命令行中,运行以下命令:
ssh -V

ssh原文件备份脚本

#!/bin/bash

backup_directory="$1"

if [ -z "$backup_directory" ]; then
  echo "Usage: ./backup_ssh.sh <backup_directory>"
  exit 1
fi

# 如果备份目录不存在,则创建它
if [ ! -d "$backup_directory" ]; then
  mkdir -p "$backup_directory"
fi

# 如果"bin"子目录不存在,则创建它
if [ ! -d "$backup_directory/bin" ]; then
  mkdir -p "$backup_directory/bin"
fi

# 备份sshd_config文件
if [ -f /etc/ssh/sshd_config ]; then
  cp /etc/ssh/sshd_config "$backup_directory/sshd_config.bak"
else
  echo "sshd_config file not found, skipping backup."
fi

# 备份SSH主机密钥文件
if ls /etc/ssh/ssh_host_*key* > /dev/null 2>&1; then
  cp /etc/ssh/ssh_host_*key* "$backup_directory/"
else
  echo "SSH host key files not found, skipping backup."
fi

# 备份SSH用户密钥文件
if [ -d ~/.ssh ]; then
  cp -R ~/.ssh "$backup_directory/"
else
  echo ".ssh directory not found, skipping backup."
fi

# 备份/usr/bin下的ssh相关文件
for file in ssh ssh-add ssh-agent ssh-copy-id ssh-keygen ssh-keyscan; do
  if [ -f "/usr/bin/$file" ]; then
    cp "/usr/bin/$file" "$backup_directory/bin/"
  else
    echo "$file not found in /usr/bin, skipping backup."
  fi
done

echo "SSH backup completed successfully."